From 51e6fff72c17f951a1274f9f9d5d6b6a1e40a013 Mon Sep 17 00:00:00 2001 From: kkunkka Date: Wed, 12 Mar 2025 14:05:21 +0800 Subject: [PATCH] kk --- .../java/com/dota/arr/_2012/Solution.java | 26 +++++++++++++ .../java/com/dota/slidingWindow/Solution.java | 27 ++++++++++++++ .../java/com/dota/str/_3305/Solution.java | 37 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 src/main/java/com/dota/arr/_2012/Solution.java create mode 100644 src/main/java/com/dota/slidingWindow/Solution.java create mode 100644 src/main/java/com/dota/str/_3305/Solution.java diff --git a/src/main/java/com/dota/arr/_2012/Solution.java b/src/main/java/com/dota/arr/_2012/Solution.java new file mode 100644 index 0000000..a8c045c --- /dev/null +++ b/src/main/java/com/dota/arr/_2012/Solution.java @@ -0,0 +1,26 @@ +package com.dota.arr._2012; + +class Solution { + public int sumOfBeauties(int[] nums) { + var res = 0; + var pre = new int[nums.length]; + pre[0] = nums[0]; + var post = new int[nums.length]; + post[nums.length - 1] = nums[nums.length - 1]; + + for (int i = 1; i < nums.length - 1; i++) { + pre[i] = Math.max(pre[i - 1], nums[i]); + post[nums.length - i - 1] = Math.min(post[nums.length - i], nums[nums.length - i - 1]); + } + + for (int i = 1; i < nums.length - 1; i++) { + if (nums[i]>pre[i-1] && nums[i]< post[i+1]) { + res += 2; + } else if (nums[i]nums[i-1]) { + res += 1; + } + } + + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/Solution.java b/src/main/java/com/dota/slidingWindow/Solution.java new file mode 100644 index 0000000..f0e6e4e --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/Solution.java @@ -0,0 +1,27 @@ +package com.dota.slidingWindow; + +class Solution { + public long countSubarrays(int[] nums, int k) { + int max = 0; + long res = 0; + for (int num : nums) { + max = Math.max(max, num); + } + + int left = 0; + int cnt = 0; + for (int i = 0; i < nums.length; i++) { + if (nums[i] == max) { + cnt++; + } + while (cnt == k) { + if (nums[left++] == max) { + cnt--; + } + } + res += left; + } + + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/str/_3305/Solution.java b/src/main/java/com/dota/str/_3305/Solution.java new file mode 100644 index 0000000..64f7ffb --- /dev/null +++ b/src/main/java/com/dota/str/_3305/Solution.java @@ -0,0 +1,37 @@ +package com.dota.str._3305; + +import java.util.HashMap; + +class Solution { + public int countOfSubstrings(String word, int k) { + return f(word, k) - f(word, k-1); + } + + public int f(String word, int k) { + int res = 0; + int cnt = 0; + int left = 0; + var map = new HashMap(); + for (int i = 0; i < word.length(); i++) { + if ("aeiou".indexOf(word.charAt(i)) >= 0) { + map.merge(word.charAt(i), 1, Integer::sum); + } else { + cnt++; + } + + while (map.size()==5 && cnt >= k) { + char out = word.charAt(left); + if ("aeiou".indexOf(out) >= 0) { + if (map.merge(out, -1, Integer::sum) == 0) { + map.remove(out); + } + } else { + cnt--; + } + left++; + } + res += left; + } + return res; + } +} \ No newline at end of file