diff --git a/src/main/java/com/dota/slidingWindow/_1695/Solution.java b/src/main/java/com/dota/slidingWindow/_1695/Solution.java new file mode 100644 index 0000000..e044399 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_1695/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2904/Solution.java b/src/main/java/com/dota/slidingWindow/_2904/Solution.java new file mode 100644 index 0000000..5b1ffc8 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2904/Solution.java @@ -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(); + 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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_904/Solution.java b/src/main/java/com/dota/slidingWindow/_904/Solution.java new file mode 100644 index 0000000..0988921 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_904/Solution.java @@ -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; + } +} \ No newline at end of file