kk
This commit is contained in:
21
src/main/java/com/dota/slidingWindow/_2302/Solution.java
Normal file
21
src/main/java/com/dota/slidingWindow/_2302/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
7
src/main/java/com/dota/slidingWindow/_2761/Solution.java
Normal file
7
src/main/java/com/dota/slidingWindow/_2761/Solution.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package com.dota.slidingWindow._2761;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public long continuousSubarrays(int[] nums) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
35
src/main/java/com/dota/slidingWindow/_2762/Solution.java
Normal file
35
src/main/java/com/dota/slidingWindow/_2762/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
19
src/main/java/com/dota/slidingWindow/_3258/Solution.java
Normal file
19
src/main/java/com/dota/slidingWindow/_3258/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
19
src/main/java/com/dota/slidingWindow/_68/Solution.java
Normal file
19
src/main/java/com/dota/slidingWindow/_68/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
19
src/main/java/com/dota/slidingWindow/_713/Solution.java
Normal file
19
src/main/java/com/dota/slidingWindow/_713/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user