kk
This commit is contained in:
21
src/main/java/com/dota/arr/_2610/Solution.java
Normal file
21
src/main/java/com/dota/arr/_2610/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
20
src/main/java/com/dota/slidingWindow/_1343/Solution.java
Normal file
20
src/main/java/com/dota/slidingWindow/_1343/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
26
src/main/java/com/dota/slidingWindow/_1456/Solution.java
Normal file
26
src/main/java/com/dota/slidingWindow/_1456/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
22
src/main/java/com/dota/slidingWindow/_1462/Solution.java
Normal file
22
src/main/java/com/dota/slidingWindow/_1462/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
29
src/main/java/com/dota/slidingWindow/_2090/Solution.java
Normal file
29
src/main/java/com/dota/slidingWindow/_2090/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
26
src/main/java/com/dota/slidingWindow/_2379/Solution.java
Normal file
26
src/main/java/com/dota/slidingWindow/_2379/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
41
src/main/java/com/dota/slidingWindow/_2461/Solution.java
Normal file
41
src/main/java/com/dota/slidingWindow/_2461/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
36
src/main/java/com/dota/slidingWindow/_2841/Solution.java
Normal file
36
src/main/java/com/dota/slidingWindow/_2841/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user