kk
This commit is contained in:
26
src/main/java/com/dota/slidingWindow/_1234/Solution.java
Normal file
26
src/main/java/com/dota/slidingWindow/_1234/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
46
src/main/java/com/dota/slidingWindow/_2875/Solution.java
Normal file
46
src/main/java/com/dota/slidingWindow/_2875/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user