diff --git a/src/main/java/com/dota/slidingWindow/_2302/Solution.java b/src/main/java/com/dota/slidingWindow/_2302/Solution.java new file mode 100644 index 0000000..932eaaa --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2302/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2761/Solution.java b/src/main/java/com/dota/slidingWindow/_2761/Solution.java new file mode 100644 index 0000000..a336c78 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2761/Solution.java @@ -0,0 +1,7 @@ +package com.dota.slidingWindow._2761; + +class Solution { + public long continuousSubarrays(int[] nums) { + + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2762/Solution.java b/src/main/java/com/dota/slidingWindow/_2762/Solution.java new file mode 100644 index 0000000..452e83d --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2762/Solution.java @@ -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(); + long res = 0; + var min = new ArrayDeque(); + 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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_3258/Solution.java b/src/main/java/com/dota/slidingWindow/_3258/Solution.java new file mode 100644 index 0000000..ea7c89f --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_3258/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_68/Solution.java b/src/main/java/com/dota/slidingWindow/_68/Solution.java new file mode 100644 index 0000000..9d7e7c4 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_68/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_713/Solution.java b/src/main/java/com/dota/slidingWindow/_713/Solution.java new file mode 100644 index 0000000..31a11a3 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_713/Solution.java @@ -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