Skip to content

Commit 24cbf9a

Browse files
committed
Updated tags
1 parent 770d061 commit 24cbf9a

File tree

4 files changed

+74
-65
lines changed

4 files changed

+74
-65
lines changed
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package g3701_3800.s3718_smallest_missing_multiple_of_k;
22

3-
// #Easy #Weekly_Contest_472 #2025_10_19_Time_3_ms_(_%)_Space_43.23_MB_(_%)
4-
5-
import java.util.Arrays;
3+
// #Easy #Weekly_Contest_472 #2025_10_21_Time_0_ms_(100.00%)_Space_43.07_MB_(95.91%)
64

75
public class Solution {
86
public int missingMultiple(int[] nums, int k) {
9-
Arrays.sort(nums);
10-
int x = k;
11-
for (int i : nums) {
12-
if (i == x) {
13-
x += k;
7+
for (int i = 1; ; i++) {
8+
int curr = i * k;
9+
int j;
10+
for (j = 0; j < nums.length; j++) {
11+
if (nums[j] == curr) {
12+
break;
13+
}
14+
}
15+
if (j == nums.length) {
16+
return curr;
1417
}
1518
}
16-
return x;
1719
}
1820
}

src/main/java/g3701_3800/s3719_longest_balanced_subarray_i/Solution.java

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,47 @@
11
package g3701_3800.s3719_longest_balanced_subarray_i;
22

3-
// #Medium #Weekly_Contest_472 #2025_10_19_Time_302_ms_(50.00%)_Space_45.14_MB_(50.00%)
4-
5-
import java.util.HashSet;
3+
// #Medium #Weekly_Contest_472 #2025_10_21_Time_10_ms_(100.00%)_Space_45.40_MB_(48.93%)
64

75
public class Solution {
86
public int longestBalanced(int[] nums) {
9-
int ans = 0;
107
int n = nums.length;
8+
int maxVal = 0;
9+
for (int v : nums) {
10+
if (v > maxVal) {
11+
maxVal = v;
12+
}
13+
}
14+
int[] evenMark = new int[maxVal + 1];
15+
int[] oddMark = new int[maxVal + 1];
16+
int stampEven = 0;
17+
int stampOdd = 0;
18+
int ans = 0;
1119
for (int i = 0; i < n; i++) {
12-
HashSet<Integer> even = new HashSet<>();
13-
HashSet<Integer> odd = new HashSet<>();
20+
if (n - i <= ans) {
21+
break;
22+
}
23+
stampEven++;
24+
stampOdd++;
25+
int distinctEven = 0;
26+
int distinctOdd = 0;
1427
for (int j = i; j < n; j++) {
15-
if (nums[j] % 2 == 0) {
16-
even.add(nums[j]);
28+
int v = nums[j];
29+
if ((v & 1) == 0) {
30+
if (evenMark[v] != stampEven) {
31+
evenMark[v] = stampEven;
32+
distinctEven++;
33+
}
1734
} else {
18-
odd.add(nums[j]);
35+
if (oddMark[v] != stampOdd) {
36+
oddMark[v] = stampOdd;
37+
distinctOdd++;
38+
}
1939
}
20-
if (even.size() == odd.size()) {
21-
ans = Math.max(ans, j - i + 1);
40+
if (distinctEven == distinctOdd) {
41+
int len = j - i + 1;
42+
if (len > ans) {
43+
ans = len;
44+
}
2245
}
2346
}
2447
}
Lines changed: 28 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,41 @@
11
package g3701_3800.s3720_lexicographically_smallest_permutation_greater_than_target;
22

3-
// #Medium #Weekly_Contest_472 #2025_10_19_Time_38_ms_(_%)_Space_46.56_MB_(_%)
4-
5-
import java.util.HashMap;
6-
import java.util.Map;
3+
// #Medium #Weekly_Contest_472 #2025_10_21_Time_2_ms_(96.02%)_Space_43.66_MB_(74.82%)
74

85
public class Solution {
96
public String lexGreaterPermutation(String s, String target) {
10-
int n = s.length();
11-
Map<Character, Integer> sCounts = new HashMap<>();
7+
int[] freq = new int[26];
128
for (char c : s.toCharArray()) {
13-
sCounts.put(c, sCounts.getOrDefault(c, 0) + 1);
9+
freq[c - 'a']++;
10+
}
11+
StringBuilder sb = new StringBuilder();
12+
if (dfs(0, freq, sb, target, false)) {
13+
return sb.toString();
14+
}
15+
return "";
16+
}
17+
18+
private boolean dfs(int i, int[] freq, StringBuilder sb, String target, boolean check) {
19+
if (i == target.length()) {
20+
return check;
1421
}
15-
String bestSolution = "";
16-
Map<Character, Integer> prefixCounts = new HashMap<>();
17-
for (int i = 0; i < n; i++) {
18-
// Create a copy of counts available for suffix and pivot
19-
Map<Character, Integer> availableCounts = new HashMap<>(sCounts);
20-
for (Map.Entry<Character, Integer> entry : prefixCounts.entrySet()) {
21-
availableCounts.put(
22-
entry.getKey(),
23-
availableCounts.getOrDefault(entry.getKey(), 0) - entry.getValue());
22+
for (int j = 0; j < 26; j++) {
23+
if (freq[j] == 0) {
24+
continue;
2425
}
25-
// Find the smallest char > target[i] to use as the pivot
26-
for (char pivotChar = (char) (target.charAt(i) + 1); pivotChar <= 'z'; pivotChar++) {
27-
if (availableCounts.getOrDefault(pivotChar, 0) > 0) {
28-
// We found a valid pivot character
29-
availableCounts.put(pivotChar, availableCounts.get(pivotChar) - 1);
30-
String currentPrefix = target.substring(0, i);
31-
// Build the smallest possible suffix from remaining characters
32-
StringBuilder suffix = new StringBuilder();
33-
for (char k = 'a'; k <= 'z'; k++) {
34-
if (availableCounts.getOrDefault(k, 0) > 0) {
35-
int count = availableCounts.get(k);
36-
suffix.append(String.valueOf(k).repeat(Math.max(0, count)));
37-
}
38-
}
39-
String candidate = currentPrefix + pivotChar + suffix;
40-
if (bestSolution.isEmpty() || candidate.compareTo(bestSolution) < 0) {
41-
bestSolution = candidate;
42-
}
43-
// Since we want the smallest pivotChar, we break after finding one
44-
break;
45-
}
26+
char can = (char) ('a' + j);
27+
if (!check && can < target.charAt(i)) {
28+
continue;
4629
}
47-
// Update prefix_counts for the next iteration
48-
char targetChar = target.charAt(i);
49-
prefixCounts.put(targetChar, prefixCounts.getOrDefault(targetChar, 0) + 1);
50-
if (prefixCounts.get(targetChar) > sCounts.getOrDefault(targetChar, 0)) {
51-
// We can't match the target's prefix any further, so stop.
52-
break;
30+
freq[j]--;
31+
sb.append(can);
32+
boolean next = check || can > target.charAt(i);
33+
if (dfs(i + 1, freq, sb, target, next)) {
34+
return true;
5335
}
36+
sb.deleteCharAt(sb.length() - 1);
37+
freq[j]++;
5438
}
55-
return bestSolution;
39+
return false;
5640
}
5741
}

src/main/java/g3701_3800/s3721_longest_balanced_subarray_ii/Solution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package g3701_3800.s3721_longest_balanced_subarray_ii;
22

3-
// #Hard #Weekly_Contest_472 #2025_10_19_Time_274_ms_(50.00%)_Space_61.82_MB_(100.00%)
3+
// #Hard #Weekly_Contest_472 #2025_10_21_Time_267_ms_(59.29%)_Space_61.94_MB_(28.32%)
44

55
import java.util.HashMap;
66
import java.util.Map;

0 commit comments

Comments
 (0)