Skip to content

Commit 559ae5a

Browse files
committed
Updated tags
1 parent aab62d7 commit 559ae5a

File tree

8 files changed

+85
-84
lines changed
  • src/main/java

8 files changed

+85
-84
lines changed

Diff for: src/main/java/g3401_3500/s3498_reverse_degree_of_a_string/Solution.java

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

3-
// #Easy #2025_03_30_Time_1_ms_(100.00%)_Space_43.05_MB_(100.00%)
3+
// #Easy #String #Simulation #2025_04_01_Time_1_ms_(100.00%)_Space_42.64_MB_(92.21%)
44

55
public class Solution {
66
public int reverseDegree(String s) {

Diff for: src/main/java/g3401_3500/s3499_maximize_active_section_with_trade_i/Solution.java

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

3-
// #Medium #2025_03_30_Time_55_ms_(100.00%)_Space_45.50_MB_(100.00%)
3+
// #Medium #String #Enumeration #2025_04_01_Time_54_ms_(97.98%)_Space_45.89_MB_(76.19%)
44

55
public class Solution {
66
public int maxActiveSectionsAfterTrade(String s) {
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,31 @@
11
package g3401_3500.s3500_minimum_cost_to_divide_array_into_subarrays;
22

3-
// #Hard #2025_03_30_Time_225_ms_(94.64%)_Space_62.54_MB_(58.93%)
4-
5-
import java.util.Arrays;
3+
// #Hard #Array #Dynamic_Programming #Prefix_Sum
4+
// #2025_04_01_Time_26_ms_(93.46%)_Space_44.97_MB_(94.77%)
65

76
@SuppressWarnings("java:S107")
87
public class Solution {
98
public long minimumCost(int[] nums, int[] cost, int k) {
109
int n = nums.length;
11-
long[] prefixNums = new long[n];
12-
long total = 0;
13-
for (int i = 0; i < n; i++) {
14-
total += nums[i];
15-
prefixNums[i] = total;
16-
}
17-
long[] prefixCost = new long[n + 1];
18-
total = 0;
10+
long kLong = (long) k;
11+
long[] preNums = new long[n + 1];
12+
long[] preCost = new long[n + 1];
1913
for (int i = 0; i < n; i++) {
20-
total += cost[i];
21-
prefixCost[i + 1] = total;
22-
}
23-
long[][] memo = new long[n][n + 1];
24-
for (long[] row : memo) {
25-
Arrays.fill(row, -1);
26-
}
27-
int[] bestSplit = new int[n];
28-
Arrays.fill(bestSplit, -1);
29-
return rec(0, 1, nums, prefixNums, prefixCost, k, memo, bestSplit);
30-
}
31-
32-
private long rec(
33-
int index,
34-
int i,
35-
int[] nums,
36-
long[] prefixNums,
37-
long[] prefixCost,
38-
int k,
39-
long[][] memo,
40-
int[] bestSplit) {
41-
int n = nums.length;
42-
if (index == n) {
43-
return 0;
44-
}
45-
if (memo[index][i] != -1) {
46-
return memo[index][i];
14+
preNums[i + 1] = preNums[i] + nums[i];
15+
preCost[i + 1] = preCost[i] + cost[i];
4716
}
48-
if (bestSplit[index] != -1) {
49-
int j = bestSplit[index];
50-
long val =
51-
(prefixNums[j] + (long) k * i) * (prefixCost[j + 1] - prefixCost[index])
52-
+ rec(j + 1, i + 1, nums, prefixNums, prefixCost, k, memo, bestSplit);
53-
memo[index][i] = val;
54-
return val;
17+
long[] dp = new long[n + 1];
18+
for (int i = 0; i <= n; i++) {
19+
dp[i] = Long.MAX_VALUE / 2;
5520
}
56-
long best = Long.MAX_VALUE;
57-
int bestIndex = -1;
58-
for (int j = index; j < n; j++) {
59-
long val =
60-
(prefixNums[j] + (long) k * i) * (prefixCost[j + 1] - prefixCost[index])
61-
+ rec(j + 1, i + 1, nums, prefixNums, prefixCost, k, memo, bestSplit);
62-
if (val < best) {
63-
best = val;
64-
bestIndex = j;
21+
dp[0] = 0L;
22+
for (int r = 1; r <= n; r++) {
23+
for (int l = 0; l < r; l++) {
24+
long sumNums = preNums[r] * (preCost[r] - preCost[l]);
25+
long sumCost = kLong * (preCost[n] - preCost[l]);
26+
dp[r] = Math.min(dp[r], dp[l] + sumNums + sumCost);
6527
}
6628
}
67-
bestSplit[index] = bestIndex;
68-
memo[index][i] = best;
69-
return best;
29+
return dp[n];
7030
}
7131
}

Diff for: src/main/java/g3501_3600/s3501_maximize_active_section_with_trade_ii/Solution.java

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

3-
// #Hard #2025_03_30_Time_260_ms_(100.00%)_Space_119.42_MB_(100.00%)
3+
// #Hard #Array #String #Binary_Search #Segment_Tree
4+
// #2025_04_01_Time_256_ms_(63.33%)_Space_106.80_MB_(56.67%)
45

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

Diff for: src/main/java/g3501_3600/s3502_minimum_cost_to_reach_every_position/Solution.java

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

3-
// #Easy #2025_03_30_Time_1_ms_(97.67%)_Space_44.71_MB_(95.61%)
3+
// #Easy #Array #2025_04_01_Time_1_ms_(97.59%)_Space_44.92_MB_(69.12%)
44

55
public class Solution {
66
public int[] minCosts(int[] cost) {
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,75 @@
11
package g3501_3600.s3503_longest_palindrome_after_substring_concatenation_i;
22

3-
// #Medium #2025_03_30_Time_389_ms_(56.95%)_Space_45.18_MB_(96.47%)
3+
// #Medium #String #Dynamic_Programming #Two_Pointers #Enumeration
4+
// #2025_04_01_Time_30_ms_(97.15%)_Space_42.23_MB_(99.79%)
45

56
public class Solution {
67
public int longestPalindrome(String s, String t) {
7-
int result = 0;
8-
for (int i = 0; i <= s.length(); i++) {
9-
for (int j = i; j <= s.length(); j++) {
10-
String subStrS = s.substring(i, j);
11-
for (int k = 0; k <= t.length(); k++) {
12-
for (int l = k; l <= t.length(); l++) {
13-
String subStrT = t.substring(k, l);
14-
String combineStr = subStrS + subStrT;
15-
if (isPalindrome(combineStr)) {
16-
result = Math.max(result, combineStr.length());
8+
int maxLen = 0;
9+
maxLen = Math.max(maxLen, longestPalindromicSubstring(s));
10+
maxLen = Math.max(maxLen, longestPalindromicSubstring(t));
11+
int sLen = s.length();
12+
int tLen = t.length();
13+
for (int i = 0; i < sLen; i++) {
14+
for (int j = i; j < sLen; j++) {
15+
int m = j - i + 1;
16+
for (int k = 0; k < tLen; k++) {
17+
for (int l = k; l < tLen; l++) {
18+
int n = l - k + 1;
19+
int totalLength = m + n;
20+
if (totalLength <= maxLen) {
21+
continue;
22+
}
23+
boolean isPalindrome = true;
24+
for (int p = 0; p < totalLength / 2; p++) {
25+
int q = totalLength - 1 - p;
26+
char c1, c2;
27+
if (p < m) {
28+
c1 = s.charAt(i + p);
29+
} else {
30+
c1 = t.charAt(k + (p - m));
31+
}
32+
if (q < m) {
33+
c2 = s.charAt(i + q);
34+
} else {
35+
c2 = t.charAt(k + (q - m));
36+
}
37+
if (c1 != c2) {
38+
isPalindrome = false;
39+
break;
40+
}
41+
}
42+
if (isPalindrome) {
43+
maxLen = totalLength;
1744
}
1845
}
1946
}
2047
}
2148
}
22-
return result;
49+
return maxLen;
2350
}
2451

25-
private boolean isPalindrome(String input) {
26-
int left = 0;
27-
int right = input.length() - 1;
28-
while (left < right) {
29-
if (input.charAt(left) != input.charAt(right)) {
30-
return false;
52+
private int longestPalindromicSubstring(String str) {
53+
int max = 0;
54+
int len = str.length();
55+
for (int i = 0; i < len; i++) {
56+
for (int j = i; j < len; j++) {
57+
boolean isPalin = true;
58+
int left = i;
59+
int right = j;
60+
while (left < right) {
61+
if (str.charAt(left) != str.charAt(right)) {
62+
isPalin = false;
63+
break;
64+
}
65+
left++;
66+
right--;
67+
}
68+
if (isPalin) {
69+
max = Math.max(max, j - i + 1);
70+
}
3171
}
32-
left++;
33-
right--;
3472
}
35-
return true;
73+
return max;
3674
}
3775
}

Diff for: src/main/java/g3501_3600/s3504_longest_palindrome_after_substring_concatenation_ii/Solution.java

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

3-
// #Hard #2025_03_30_Time_21_ms_(100.00%)_Space_56.36_MB_(57.78%)
3+
// #Hard #String #Dynamic_Programming #Two_Pointers
4+
// #2025_04_01_Time_25_ms_(99.50%)_Space_52.97_MB_(90.50%)
45

56
public class Solution {
67
private int[] sPa;

Diff for: src/main/java/g3501_3600/s3505_minimum_operations_to_make_elements_within_k_subarrays_equal/Solution.java

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

3-
// #Hard #2025_03_30_Time_512_ms_(95.52%)_Space_82.02_MB_(14.18%)
3+
// #Hard #Array #Hash_Table #Dynamic_Programming #Math #Heap_Priority_Queue #Sliding_Window
4+
// #2025_04_01_Time_547_ms_(77.95%)_Space_82.16_MB_(16.92%)
45

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

0 commit comments

Comments
 (0)