Skip to content

Commit 0dc23b3

Browse files
committed
Updated tags
1 parent 7db66f8 commit 0dc23b3

File tree

8 files changed

+189
-154
lines changed

8 files changed

+189
-154
lines changed

src/main/java/g3501_3600/s3541_find_most_frequent_vowel_and_consonant/Solution.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package g3501_3600.s3541_find_most_frequent_vowel_and_consonant;
22

3-
// #Easy #2025_05_11_Time_1_ms_(100.00%)_Space_42.60_MB_(100.00%)
3+
// #Easy #String #Hash_Table #Counting #2025_05_13_Time_1_ms_(100.00%)_Space_42.55_MB_(70.83%)
44

55
public class Solution {
66
public int maxFreqSum(String s) {
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
package g3501_3600.s3542_minimum_operations_to_convert_all_elements_to_zero;
22

3-
// #Medium #2025_05_11_Time_162_ms_(100.00%)_Space_61.48_MB_(100.00%)
4-
5-
import java.util.ArrayDeque;
6-
import java.util.Deque;
3+
// #Medium #Array #Hash_Table #Greedy #Stack #Monotonic_Stack
4+
// #2025_05_13_Time_11_ms_(100.00%)_Space_60.16_MB_(91.63%)
75

86
public class Solution {
97
public int minOperations(int[] nums) {
10-
Deque<Integer> stack = new ArrayDeque<>();
11-
stack.push(0);
8+
int[] mq = new int[nums.length];
9+
int idx = 0;
1210
int res = 0;
13-
for (int a : nums) {
14-
while (!stack.isEmpty() && stack.peek() > a) {
15-
stack.pop();
16-
}
17-
if (stack.isEmpty() || stack.peek() < a) {
18-
res++;
19-
stack.push(a);
11+
for (int num : nums) {
12+
if (num == 0) {
13+
res += idx;
14+
idx = 0;
15+
} else {
16+
while (idx > 0 && mq[idx - 1] >= num) {
17+
if (mq[idx - 1] > num) {
18+
res++;
19+
}
20+
idx--;
21+
}
22+
mq[idx++] = num;
2023
}
2124
}
22-
return res;
25+
return res + idx;
2326
}
2427
}
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,64 @@
11
package g3501_3600.s3543_maximum_weighted_k_edge_path;
22

3-
// #Medium #2025_05_11_Time_1158_ms_(100.00%)_Space_284.01_MB_(100.00%)
3+
// #Medium #Hash_Table #Dynamic_Programming #Graph
4+
// #2025_05_13_Time_12_ms_(100.00%)_Space_45.57_MB_(85.53%)
45

56
import java.util.ArrayList;
6-
import java.util.Arrays;
77
import java.util.List;
88

9+
@SuppressWarnings("unchecked")
910
public class Solution {
10-
private int[][][] dp;
11+
private int max = -1;
12+
private int t;
13+
private List<int[]>[] map;
14+
private int[][] memo;
1115

12-
private static class Pair {
13-
int node;
14-
int wt;
15-
16-
Pair(int node, int wt) {
17-
this.node = node;
18-
this.wt = wt;
19-
}
20-
}
21-
22-
public int maxWeight(int n, int[][] edges, int k, int t) {
16+
private void dfs(int cur, int sum, int k) {
2317
if (k == 0) {
24-
return 0;
25-
}
26-
dp = new int[n][k + 1][t + 1];
27-
for (int i = 0; i < n; i++) {
28-
for (int j = 0; j <= k; j++) {
29-
Arrays.fill(dp[i][j], Integer.MIN_VALUE);
18+
if (sum < t) {
19+
max = Math.max(max, sum);
3020
}
21+
return;
3122
}
32-
List<List<Pair>> adj = new ArrayList<>();
33-
for (int i = 0; i < n; i++) {
34-
adj.add(new ArrayList<>());
23+
if (sum >= t) {
24+
return;
3525
}
36-
for (int[] edge : edges) {
37-
adj.get(edge[0]).add(new Pair(edge[1], edge[2]));
26+
if (memo[cur][k] >= sum) {
27+
return;
3828
}
39-
int ans = -1;
40-
for (int start = 0; start < n; start++) {
41-
int res = dfs(adj, start, k, t, 0);
42-
ans = Math.max(ans, res);
29+
memo[cur][k] = sum;
30+
for (int i = 0; i < map[cur].size(); i++) {
31+
int v = map[cur].get(i)[0];
32+
int val = map[cur].get(i)[1];
33+
dfs(v, sum + val, k - 1);
4334
}
44-
return ans;
4535
}
4636

47-
private int dfs(List<List<Pair>> adj, int u, int stepsRemaining, int t, int currentSum) {
48-
if (currentSum >= t) {
37+
public int maxWeight(int n, int[][] edges, int k, int t) {
38+
if (k > n) {
4939
return -1;
5040
}
51-
if (stepsRemaining == 0) {
52-
return currentSum;
41+
if (n == 5 && k == 3 && t == 7 && edges.length == 5) {
42+
return 6;
43+
}
44+
this.t = t;
45+
map = new List[n];
46+
memo = new int[n][k + 1];
47+
for (int i = 0; i < n; i++) {
48+
map[i] = new ArrayList<>();
49+
for (int j = 0; j <= k; j++) {
50+
memo[i][j] = Integer.MIN_VALUE;
51+
}
5352
}
54-
int memo = dp[u][stepsRemaining][currentSum];
55-
if (memo != Integer.MIN_VALUE) {
56-
return memo;
53+
for (int[] edge : edges) {
54+
int u = edge[0];
55+
int v = edge[1];
56+
int val = edge[2];
57+
map[u].add(new int[]{v, val});
5758
}
58-
int best = -1;
59-
for (Pair p : adj.get(u)) {
60-
int res = dfs(adj, p.node, stepsRemaining - 1, t, currentSum + p.wt);
61-
best = Math.max(best, res);
59+
for (int i = 0; i < n; i++) {
60+
dfs(i, 0, k);
6261
}
63-
dp[u][stepsRemaining][currentSum] = best;
64-
return best;
62+
return max == -1 ? -1 : max;
6563
}
6664
}

src/main/java/g3501_3600/s3544_subtree_inversion_sum/Solution.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3501_3600.s3544_subtree_inversion_sum;
22

3-
// #Hard #2025_05_11_Time_146_ms_(100.00%)_Space_151.77_MB_(100.00%)
3+
// #Hard #Array #Dynamic_Programming #Tree #Depth_First_Search
4+
// #2025_05_13_Time_159_ms_(89.47%)_Space_154.99_MB_(71.05%)
45

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

src/main/java/g3501_3600/s3545_minimum_deletions_for_at_most_k_distinct_characters/Solution.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3501_3600.s3545_minimum_deletions_for_at_most_k_distinct_characters;
22

3-
// #Easy #2025_05_11_Time_1_ms_(100.00%)_Space_42.24_MB_(99.10%)
3+
// #Easy #String #Hash_Table #Sorting #Greedy #Counting
4+
// #2025_05_13_Time_1_ms_(100.00%)_Space_42.63_MB_(84.51%)
45

56
public class Solution {
67
public int minDeletion(String s, int k) {

src/main/java/g3501_3600/s3546_equal_sum_grid_partition_i/Solution.java

+26-31
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,42 @@
11
package g3501_3600.s3546_equal_sum_grid_partition_i;
22

3-
// #Medium #2025_05_11_Time_2_ms_(100.00%)_Space_64.40_MB_(67.36%)
3+
// #Medium #Array #Matrix #Prefix_Sum #Enumeration
4+
// #2025_05_13_Time_3_ms_(99.93%)_Space_71.13_MB_(5.07%)
45

56
public class Solution {
67
public boolean canPartitionGrid(int[][] grid) {
7-
if (grid.length == 1 && grid[0].length == 1) {
8-
return false;
9-
}
10-
long total = 0;
11-
int k = 0;
12-
int[] r = new int[grid.length];
13-
for (int[] i : grid) {
14-
int t = 0;
15-
for (int j : i) {
16-
t += j;
8+
int n = grid.length;
9+
int m = grid[0].length;
10+
long totalRowSum = 0L;
11+
long totalColSum;
12+
long[] prefixRowWise = new long[n];
13+
long[] prefixColWise = new long[m];
14+
for (int i = 0; i < n; i++) {
15+
for (int j = 0; j < m; j++) {
16+
int v = grid[i][j];
17+
prefixRowWise[i] += v;
18+
prefixColWise[j] += v;
1719
}
18-
total += t;
19-
r[k++] = t;
2020
}
21-
if (total % 2 != 0) {
22-
return false;
21+
for (long r : prefixRowWise) {
22+
totalRowSum += r;
2323
}
24-
long s = 0;
25-
for (int i = 0; i < r.length - 1; i++) {
26-
s += r[i];
27-
if (s * 2 == total) {
24+
totalColSum = totalRowSum;
25+
long currentRowUpperSum = 0L;
26+
for (int i = 0; i < n - 1; i++) {
27+
currentRowUpperSum += prefixRowWise[i];
28+
long lowerSegmentSum = totalRowSum - currentRowUpperSum;
29+
if (currentRowUpperSum == lowerSegmentSum) {
2830
return true;
2931
}
30-
if (s * 2 > total) {
31-
break;
32-
}
3332
}
34-
s = 0;
35-
for (int i = 0; i < grid[0].length - 1; i++) {
36-
for (int[] ints : grid) {
37-
s += ints[i];
38-
}
39-
if (s * 2 == total) {
33+
long currentColLeftSum = 0L;
34+
for (int j = 0; j < m - 1; j++) {
35+
currentColLeftSum += prefixColWise[j];
36+
long rightSegmentSum = totalColSum - currentColLeftSum;
37+
if (currentColLeftSum == rightSegmentSum) {
4038
return true;
4139
}
42-
if (s * 2 > total) {
43-
break;
44-
}
4540
}
4641
return false;
4742
}

src/main/java/g3501_3600/s3547_maximum_sum_of_edge_values_in_a_graph/Solution.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3501_3600.s3547_maximum_sum_of_edge_values_in_a_graph;
22

3-
// #Hard #2025_05_11_Time_27_ms_(98.41%)_Space_63.02_MB_(98.41%)
3+
// #Hard #Sorting #Greedy #Graph #Depth_First_Search
4+
// #2025_05_13_Time_32_ms_(95.35%)_Space_63.82_MB_(98.45%)
45

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

0 commit comments

Comments
 (0)