Skip to content

Commit 121f91f

Browse files
committed
Updated tags
1 parent a27df2e commit 121f91f

File tree

4 files changed

+43
-33
lines changed
  • src/main/java/g3301_3400

4 files changed

+43
-33
lines changed

src/main/java/g3301_3400/s3386_button_with_longest_push_time/Solution.java

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

3-
// #Easy #2024_12_15_Time_0_ms_(100.00%)_Space_44.6_MB_(100.00%)
3+
// #Easy #Array #2024_12_18_Time_0_ms_(100.00%)_Space_45_MB_(38.39%)
44

55
public class Solution {
66
public int buttonWithLongestTime(int[][] events) {

src/main/java/g3301_3400/s3387_maximize_amount_after_two_days_of_conversions/Solution.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3301_3400.s3387_maximize_amount_after_two_days_of_conversions;
22

3-
// #Medium #2024_12_15_Time_7_ms_(100.00%)_Space_46.6_MB_(100.00%)
3+
// #Medium #Array #String #Graph #Depth_First_Search #Breadth_First_Search
4+
// #2024_12_18_Time_7_ms_(87.88%)_Space_47.5_MB_(43.35%)
45

56
import java.util.ArrayList;
67
import java.util.HashMap;

src/main/java/g3301_3400/s3388_count_beautiful_splits_in_an_array/Solution.java

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

3-
// #Medium #2024_12_15_Time_165_ms_(100.00%)_Space_266.1_MB_(100.00%)
3+
// #Medium #Array #Dynamic_Programming #2024_12_18_Time_167_ms_(70.49%)_Space_269.1_MB_(5.74%)
44

55
public class Solution {
66
public int beautifulSplits(int[] nums) {
Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,51 @@
11
package g3301_3400.s3389_minimum_operations_to_make_character_frequencies_equal;
22

3-
// #Hard #2024_12_15_Time_56_ms_(100.00%)_Space_44.8_MB_(100.00%)
4-
5-
import java.util.Arrays;
3+
// #Hard #String #Hash_Table #Dynamic_Programming #Counting #Enumeration
4+
// #2024_12_18_Time_4_ms_(100.00%)_Space_44.8_MB_(67.80%)
65

76
public class Solution {
87
public int makeStringGood(String s) {
9-
int n = s.length();
10-
int[] a = new int[110];
11-
for (char ch : s.toCharArray()) {
12-
a[ch - 'a' + 1]++;
8+
int[] freqarr = new int[26];
9+
for (int i = 0; i < s.length(); i++) {
10+
freqarr[s.charAt(i) - 'a'] += 1;
1311
}
14-
int[][] f = new int[30][3];
15-
int inf = Integer.MAX_VALUE / 2;
16-
int ans = inf;
17-
for (int avg = 1; avg <= n; avg++) {
18-
for (int[] row : f) {
19-
Arrays.fill(row, inf);
20-
}
21-
f[0][0] = 0;
22-
for (int i = 1; i <= 26; i++) {
23-
f[i][0] = Math.min(Math.min(f[i - 1][0], f[i - 1][1]), f[i - 1][2]) + a[i];
24-
if (a[i] <= avg) {
25-
f[i][1] =
26-
Math.min(
27-
Math.min(
28-
f[i - 1][0] + Math.max(avg - a[i - 1] - a[i], 0),
29-
f[i - 1][1] + (avg - a[i])),
30-
f[i - 1][2] + Math.max(avg - (a[i - 1] - avg) - a[i], 0));
12+
int ctr = 0;
13+
int max = 0;
14+
for (int i = 0; i < 26; i++) {
15+
ctr = freqarr[i] != 0 ? ctr + 1 : ctr;
16+
max = freqarr[i] != 0 ? Math.max(max, freqarr[i]) : max;
17+
}
18+
if (ctr == 0) {
19+
return 0;
20+
}
21+
int minops = 2 * 10000;
22+
for (int j = 0; j <= max; j++) {
23+
int ops = 0;
24+
int ifdel = 0;
25+
int ifadd = 0;
26+
int free = 0;
27+
for (int i = 0; i < 26; i++) {
28+
if (freqarr[i] == 0) {
29+
free = 0;
30+
continue;
3131
}
32-
if (a[i] >= avg) {
33-
f[i][2] =
34-
Math.min(Math.min(f[i - 1][0], f[i - 1][1]), f[i - 1][2])
35-
+ (a[i] - avg);
32+
if (freqarr[i] >= j) {
33+
ifdel = Math.min(ifdel, ifadd) + freqarr[i] - j;
34+
free = freqarr[i] - j;
35+
ifadd = 2 * 10000;
36+
} else {
37+
int currifdel = Math.min(ifdel, ifadd) + freqarr[i];
38+
int currifadd =
39+
Math.min(
40+
ifadd + j - freqarr[i],
41+
ifdel + Math.max(0, j - freqarr[i] - free));
42+
ifadd = currifadd;
43+
ifdel = currifdel;
44+
free = freqarr[i];
3645
}
3746
}
38-
ans = Math.min(ans, Math.min(f[26][0], Math.min(f[26][1], f[26][2])));
47+
minops = Math.min(minops, Math.min(ifdel, ifadd));
3948
}
40-
return ans == inf ? -1 : ans;
49+
return minops;
4150
}
4251
}

0 commit comments

Comments
 (0)