diff --git a/src/main/java/com/dota/arr/_2610/Solution.java b/src/main/java/com/dota/arr/_2610/Solution.java new file mode 100644 index 0000000..30eeb7b --- /dev/null +++ b/src/main/java/com/dota/arr/_2610/Solution.java @@ -0,0 +1,21 @@ +package com.dota.arr._2610; + +import java.util.ArrayList; +import java.util.List; + +class Solution { + public List> findMatrix(int[] nums) { + var res = new ArrayList>(); + int n = nums.length; + var dp = new int[n + 1]; + for (int num : nums) { + if(dp[num] == res.size()) { + res.add(new ArrayList<>()); + } + + res.get(dp[num]).add(num); + dp[num]++; + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_1343/Solution.java b/src/main/java/com/dota/slidingWindow/_1343/Solution.java new file mode 100644 index 0000000..53dba1c --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_1343/Solution.java @@ -0,0 +1,20 @@ +package com.dota.slidingWindow._1343; + +class Solution { + public int numOfSubarrays(int[] arr, int k, int threshold) { + int target = k * threshold; + int cnt = 0; + int sum = 0; + for (int i = 0; i < k; i++) { + sum += arr[i]; + } + if (sum >= target) cnt++; + int l = 0, r = k; + while (r < arr.length) { + sum -= arr[l++]; + sum += arr[r++]; + if (sum >= target) cnt++; + } + return cnt; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_1456/Solution.java b/src/main/java/com/dota/slidingWindow/_1456/Solution.java new file mode 100644 index 0000000..d0800d6 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_1456/Solution.java @@ -0,0 +1,26 @@ +package com.dota.slidingWindow._1456; + +class Solution { + private static final byte[] dp = new byte[128]; + + static { + dp['a'] = dp['e'] = dp['i'] = dp['o'] = dp['u'] = 1; + } + + public int maxVowels(String s, int k) { + int cnt = 0; + int l = 0, r = 0; + var cs = s.toCharArray(); + while (r < k) { + cnt += dp[cs[r++]]; + } + int res = cnt; + while (r < s.length()) { + cnt += dp[cs[r++]]; + cnt -= dp[cs[l++]]; + res = Math.max(res, cnt); + } + + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_1462/Solution.java b/src/main/java/com/dota/slidingWindow/_1462/Solution.java new file mode 100644 index 0000000..84c7d39 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_1462/Solution.java @@ -0,0 +1,22 @@ +package com.dota.slidingWindow._1462; + +class Solution { + public boolean hasAllCodes(String s, int k) { + if (s.length()<=k) return false; + int n = 1<=k-1) { + if(!dp[num]) { + sum++; + } + dp[num] = true; + } + } + return sum == n; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2090/Solution.java b/src/main/java/com/dota/slidingWindow/_2090/Solution.java new file mode 100644 index 0000000..2fc2a49 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2090/Solution.java @@ -0,0 +1,29 @@ +package com.dota.slidingWindow._2090; + +import java.util.Arrays; + +class Solution { + public int[] getAverages(int[] nums, int k) { + var res = new int[nums.length]; + Arrays.fill(res, -1); + if (2 * k >= nums.length) { + return res; + } + + long sum = 0; + for (int i = 0; i <= 2 * k; i++) { + sum += nums[i]; + } + + int l = 0, r = 2 * k + 1; + res[k] = (int)(sum / (2 * k + 1)); + int idx = k+1; + while (r < nums.length) { + sum += nums[r++]; + sum -= nums[l++]; + res[idx] =(int) (sum / (2 * k + 1)); + idx++; + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2379/Solution.java b/src/main/java/com/dota/slidingWindow/_2379/Solution.java new file mode 100644 index 0000000..ec1b3c8 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2379/Solution.java @@ -0,0 +1,26 @@ +package com.dota.slidingWindow._2379; + +class Solution { + public int minimumRecolors(String blocks, int k) { + int res = 0; + for (int i = 0; i < k; i++) { + if (blocks.charAt(i) == 'W') { + res++; + } + } + if (res == 0) return 0; + + int t = res; + int l = 0, r = k; + while (r < blocks.length()) { + if (blocks.charAt(r++) == 'W') { + t++; + } + if (blocks.charAt(l++) == 'W') { + t--; + } + res = Math.min(res, t); + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2461/Solution.java b/src/main/java/com/dota/slidingWindow/_2461/Solution.java new file mode 100644 index 0000000..3d5d2ee --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2461/Solution.java @@ -0,0 +1,41 @@ +package com.dota.slidingWindow._2461; + +import java.util.HashMap; + +class Solution { + public long maximumSubarraySum(int[] nums, int k) { + long res = 0; + var map = new int[100001]; + long sum = 0; + int cnt = 0; + for (int i = 0; i < k; i++) { + map[nums[i]]++; + sum += nums[i]; + if (map[nums[i]] == 1) { + cnt++; + } + } + if (cnt == k) { + res = sum; + } + + int l = 0, r = k; + while (r < nums.length) { + if (map[nums[l]] == 1) { + cnt--; + } + + map[nums[l]]--; + map[nums[r]]++; + if (map[nums[r]] == 1) { + cnt++; + } + sum -= nums[l++]; + sum += nums[r++]; + if (cnt == k) { + res = Math.max(res, sum); + } + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2841/Solution.java b/src/main/java/com/dota/slidingWindow/_2841/Solution.java new file mode 100644 index 0000000..98c7648 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2841/Solution.java @@ -0,0 +1,36 @@ +package com.dota.slidingWindow._2841; + +import java.util.HashMap; +import java.util.List; + +class Solution { + public long maxSum(List nums, int m, int k) { + long res = 0; + var map = new HashMap(); + long sum = 0; + for (int i = 0; i < k; i++) { + map.put(nums.get(i), map.getOrDefault(nums.get(i), 0) + 1); + sum += nums.get(i); + } + if (map.size() >= m) { + res = sum; + } + + int l = 0; + for (int i = k; i < nums.size(); i++) { + if (map.get(nums.get(l)) == 1) { + map.remove(nums.get(l)); + } else { + map.put(nums.get(l), map.get(nums.get(l)) - 1); + } + map.put(nums.get(i), map.getOrDefault(nums.get(i), 0) + 1); + sum += nums.get(i); + sum -= nums.get(l++); + + if (map.size() >= m) { + res = Math.max(res, sum); + } + } + return res; + } +} \ No newline at end of file