This commit is contained in:
kkunkka
2025-04-09 10:42:06 +08:00
parent 4c69991f14
commit 0c07459079
4 changed files with 119 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package com.dota.slidingWindow._1695;
class Solution {
public int maximumUniqueSubarray(int[] nums) {
var dp = new int[10001];
var res = 0;
int sum = 0;
int l = 0;
for (int num : nums) {
dp[num]++;
sum += num;
while (dp[num] == 2) {
sum -= nums[l];
dp[nums[l]]--;
l++;
}
res = Math.max(res, sum);
}
return res;
}
}

View File

@@ -0,0 +1,38 @@
package com.dota.slidingWindow._2904;
class Solution {
public String shortestBeautifulSubstring(String s, int k) {
int l = 0;
int cnt = 0;
String res = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '0') {
continue;
}
cnt++;
if (cnt==k) {
while(s.charAt(l)=='0') {
l++;
}
if (res.isEmpty()) {
res = s.substring(l, i+1);
} else {
if (i+1-l < res.length()) {
res = s.substring(l, i+1);
} else if (i+1-l==res.length() && s.substring(l,i+1).compareTo(res)<0) {
res = s.substring(l,i+1);
}
}
}
while(cnt==k||(l<s.length()&& s.charAt(l)=='0')) {
if (s.charAt(l)=='1') {
cnt--;
}
l++;
}
}
return res;
}
}

View File

@@ -0,0 +1,20 @@
package com.dota.slidingWindow._2958;
import java.util.HashMap;
class Solution {
public int maxSubarrayLength(int[] nums, int k) {
int res=0;
int l = 0;
var dp = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
dp.put(nums[i], dp.getOrDefault(nums[i], 0) + 1);
while (dp.get(nums[i]) > k) {
dp.put(nums[l], dp.get(nums[l]) - 1);
l++;
}
res = Math.max(res, i - l + 1);
}
return res;
}
}

View File

@@ -0,0 +1,40 @@
package com.dota.slidingWindow._904;
class Solution {
public int totalFruit(int[] fruits) {
int res = 0;
int n = fruits.length;
var dp = new int[n];
int cnt = 0;
int l = 0;
for (int i = 0; i < n; i++) {
var idx = fruits[i];
dp[idx]++;
if (dp[idx] == 1) {
cnt++;
}
while (cnt > 2) {
idx = fruits[l++];
dp[idx]--;
if (dp[idx] == 0) {
cnt--;
}
}
res = Math.max(res, i - l + 1);
}
return res;
}
}
class Saolution {
public int minimumOperations(int[] nums) {
var dp = new int[101];
for (int i = nums.length - 1; i >= 0; i--) {
dp[nums[i]]++;
if (dp[nums[i]] == 2) {
return (i+3)/3;
}
}
return 0;
}
}