This commit is contained in:
kkunkka
2025-04-09 23:28:52 +08:00
parent 0c07459079
commit 975b2b87a2
2 changed files with 72 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
package com.dota.slidingWindow._1234;
class Solution {
public int balancedString(String s) {
int n = s.length();
int k = n/4;
var dp = new int[265];
int res = n;
int l = 0;
for (int i = 0; i < n; i++) {
dp[s.charAt(i)]++;
}
if (dp['Q']==dp['W']&&dp['W']==dp['E']&&dp['E']==dp['R']) {
return 0;
}
for (int i = 0; i < n; i++) {
dp[s.charAt(i)]--;
while (l<=i && dp['Q']<=k&&dp['W']<=k&&dp['E']<=k&&dp['R']<=k) {
res = Math.min(res, i - l + 1);
dp[s.charAt(l++)]++;
}
}
return res;
}
}

View File

@@ -0,0 +1,46 @@
package com.dota.slidingWindow._2875;
class Solution {
public static void main(String[] args) {
new Solution().minSizeSubarray(new int[]{2,4,6,8}, 3);
}
public int minSizeSubarray(int[] nums, int target) {
int sum = 0;
for (int num : nums) {
sum += num;
}
int n = nums.length;
int res = 0;
int k=0;
if (sum <= target) {
k = target / sum;
res = k * n;
target = target % sum;
}
if (target == 0) {
return res;
}
int l = 0;
sum = 0;
var cnt = n+1;
for (int i = 0; i < 2 * n; i++) {
sum += nums[i%n];
if (sum == target) {
cnt = Math.min(cnt, i - l + 1);
}
while (sum > target) {
sum -= nums[l%n];
l++;
if (sum==target) {
cnt = Math.min(cnt, i - l + 1);
}
}
}
if(cnt == n+1 ) {
return -1;
}
return res + cnt;
}
}