This commit is contained in:
kkunkka
2025-04-17 12:13:08 +08:00
parent 45fb9f1db2
commit da0273ca2e
6 changed files with 120 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package com.dota.slidingWindow._2302;
class Solution {
public long countSubarrays(int[] nums, long k) {
int n = nums.length;
int l = 0;
long res = 0;
long sum = 0;
long t;
for (int i = 0; i < n; i++) {
sum += nums[i];
t = sum*(i-l+1);
while (t>=k) {
sum -= nums[l++];
t = sum*(i-l+1);
}
res += (i-l+1);
}
return res;
}
}

View File

@@ -0,0 +1,7 @@
package com.dota.slidingWindow._2761;
class Solution {
public long continuousSubarrays(int[] nums) {
}
}

View File

@@ -0,0 +1,35 @@
package com.dota.slidingWindow._2762;
import java.util.ArrayDeque;
class Solution {
public long continuousSubarrays(int[] nums) {
int n = nums.length;
int l = 0;
var max = new ArrayDeque<Integer>();
long res = 0;
var min = new ArrayDeque<Integer>();
for (int i = 0; i < n; i++) {
while (!max.isEmpty() && nums[i] > max.getLast()) {
max.removeLast();
}
max.addLast(nums[i]);
while (!min.isEmpty() && nums[i] < min.getLast()) {
min.removeLast();
}
min.addLast(nums[i]);
while (max.getFirst() - min.getFirst() > 2) {
if (max.getFirst() == nums[l]) {
max.removeFirst();
}
if (min.getFirst() == nums[l]) {
min.removeFirst();
}
l++;
}
res += (i-l+1);
}
return res;
}
}

View File

@@ -0,0 +1,19 @@
package com.dota.slidingWindow._3258;
class Solution {
public int countKConstraintSubstrings(String s, int k) {
int res = 0;
int i = 0;
int n = s.length();
int[] dp = new int[2];
for (int l = 0; l < n; l++) {
int t = s.charAt(l) - '0';
dp[t]++;
while (dp[0] > k && dp[1] > k) {
dp[s.charAt(i++) - '0']--;
}
res += (l-i+1);
}
return res;
}
}

View File

@@ -0,0 +1,19 @@
package com.dota.slidingWindow._68;
class Solution {
public int beautifulBouquet(int[] flowers, int cnt) {
int n = flowers.length;
int res = 0;
int l = 0;
var dp = new int[100001];
for (int i = 0; i < n; i++) {
dp[flowers[i]]++;
while (dp[flowers[i]] > cnt) {
dp[flowers[l]]--;
l++;
}
res += l;
}
return n * (n + 1) / 2 - res;
}
}

View File

@@ -0,0 +1,19 @@
package com.dota.slidingWindow._713;
class Solution {
public int numSubarrayProductLessThanK(int[] nums, int k) {
int res = 0;
int n = nums.length;
int sum = 1;
int l = 0;
for (int i = 0; i < n; i++) {
sum *= nums[i];
while(sum >=k && l<n) {
sum /= nums[l++];
}
res += (i - l + 1);
}
return res;
}
}