This commit is contained in:
kkunkka
2025-03-21 13:17:50 +08:00
parent 70116de2d6
commit 89a80a0be8
8 changed files with 221 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package com.dota.arr._2610;
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<List<Integer>> findMatrix(int[] nums) {
var res = new ArrayList<List<Integer>>();
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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
boolean[] dp = new boolean[n];
int mask = n-1;
int sum = 0;
int num =0;
for (int i = 0; i < s.length(); i++) {
num = mask & (num<<1) + (s.charAt(i)-'0');
if(i>=k-1) {
if(!dp[num]) {
sum++;
}
dp[num] = true;
}
}
return sum == n;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -0,0 +1,36 @@
package com.dota.slidingWindow._2841;
import java.util.HashMap;
import java.util.List;
class Solution {
public long maxSum(List<Integer> nums, int m, int k) {
long res = 0;
var map = new HashMap<Integer, Integer>();
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;
}
}