Skip to content

Commit 49f7f02

Browse files
committed
Fixed sonar
1 parent 414febb commit 49f7f02

File tree

4 files changed

+38
-17
lines changed

4 files changed

+38
-17
lines changed

src/main/java/g3401_3500/s3452_sum_of_good_numbers/Solution.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,11 @@ public int sumOfGoodNumbers(int[] nums, int k) {
88
int n = nums.length;
99
for (int i = 0; i < n; i++) {
1010
boolean isGood = true;
11-
if (i - k >= 0) {
12-
if (nums[i] <= nums[i - k]) {
13-
isGood = false;
14-
}
11+
if (i - k >= 0 && nums[i] <= nums[i - k]) {
12+
isGood = false;
1513
}
16-
if (i + k < n) {
17-
if (nums[i] <= nums[i + k]) {
18-
isGood = false;
19-
}
14+
if (i + k < n && nums[i] <= nums[i + k]) {
15+
isGood = false;
2016
}
2117
if (isGood) {
2218
totalSum += nums[i];

src/main/java/g3401_3500/s3454_separate_squares_ii/Solution.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ private double findSplitPoint(Event[] events, double[] xs, int m, double target)
7070
SegmentTree segTree = new SegmentTree(xs);
7171
double lastY = events[0].y;
7272
double cumArea = 0.0;
73-
for (int i = 0; i < m; ) {
73+
int i = 0;
74+
while (i < m) {
7475
double curY = events[i].y;
7576
if (curY > lastY) {
7677
double unionX = segTree.query();

src/main/java/g3401_3500/s3455_shortest_matching_substring/Solution.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
// #Hard #2025_02_16_Time_976_ms_(100.00%)_Space_45.76_MB_(100.00%)
44

5+
@SuppressWarnings("java:S6541")
56
public class Solution {
67
public int shortestMatchingSubstring(String s, String p) {
78
int minLen = Integer.MAX_VALUE;

src/main/java/g3401_3500/s3458_select_k_disjoint_special_substrings/Solution.java

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
import java.util.Arrays;
66

77
public class Solution {
8-
public boolean maxSubstringLength(String s, int k) {
9-
char[] arr = s.toCharArray();
10-
int n = arr.length;
8+
private int[][] buildFrequencyArray(char[] arr, int n) {
119
int[][] freq = new int[2][26];
1210
for (int[] is : freq) {
1311
Arrays.fill(is, -1);
@@ -19,6 +17,10 @@ public boolean maxSubstringLength(String s, int k) {
1917
}
2018
freq[1][x] = i;
2119
}
20+
return freq;
21+
}
22+
23+
private void updateFrequencyBounds(int[][] freq, char[] arr) {
2224
for (int i = 0; i < 26; i++) {
2325
if (freq[0][i] == -1) {
2426
continue;
@@ -32,6 +34,9 @@ public boolean maxSubstringLength(String s, int k) {
3234
freq[1][i] = max;
3335
freq[0][i] = min;
3436
}
37+
}
38+
39+
private int[][] buildTempArray(int[][] freq) {
3540
int[][] temp = new int[2][26];
3641
int x = 0;
3742
for (int i = 0; i < 26; i++) {
@@ -44,11 +49,10 @@ public boolean maxSubstringLength(String s, int k) {
4449
x++;
4550
}
4651
}
47-
int[][] nums = new int[x][2];
48-
for (int i = 0; i < x; i++) {
49-
nums[i][0] = temp[0][i];
50-
nums[i][1] = temp[1][i];
51-
}
52+
return new int[][] {temp[0], temp[1], new int[] {x}};
53+
}
54+
55+
private int[][] processIntervals(int[][] nums, int x) {
5256
Arrays.sort(nums, (a, b) -> a[0] - b[0]);
5357
int[][] ans = new int[x][2];
5458
int y = 0;
@@ -71,6 +75,25 @@ public boolean maxSubstringLength(String s, int k) {
7175
}
7276
}
7377
}
78+
return new int[][] {ans[0], new int[] {y}};
79+
}
80+
81+
public boolean maxSubstringLength(String s, int k) {
82+
char[] arr = s.toCharArray();
83+
int n = arr.length;
84+
int[][] freq = buildFrequencyArray(arr, n);
85+
updateFrequencyBounds(freq, arr);
86+
int[][] tempResult = buildTempArray(freq);
87+
int[][] temp = new int[][] {tempResult[0], tempResult[1]};
88+
int x = tempResult[2][0];
89+
int[][] nums = new int[x][2];
90+
for (int i = 0; i < x; i++) {
91+
nums[i][0] = temp[0][i];
92+
nums[i][1] = temp[1][i];
93+
}
94+
int[][] processedResult = processIntervals(nums, x);
95+
int[][] ans = new int[][] {processedResult[0]};
96+
int y = processedResult[1][0];
7497
if (y >= k) {
7598
if (y == 1 && k == 1) {
7699
return ans[0][0] != 0 || ans[0][1] != n - 1;

0 commit comments

Comments
 (0)