https://leetcode.com/problems/count-complete-subarrays-in-an-array/
2799. Count Complete Subarrays in an Array
給你一個陣列nums,如果一個子陣列有nums的所有元素,則他是一個完全子陣列,
找出共有幾個完全子陣列。
思路:
毫無反應就是個滑動窗口模板,先找出不重複元素數量,然後當子陣列滿足數量的時候,
這個子陣列左邊也都滿足,l保存左邊切到哪是合法的。
Java Code:
--------------------------------------------
class Solution {
public int countCompleteSubarrays(int[] nums) {
Map<Integer, Integer> count = new HashMap<>();
for (int num : nums) {
count.put(num, count.getOrDefault(num, 0) + 1);
}
int res = 0;
int l = 0;
int r = 0;
Map<Integer, Integer> curr = new HashMap<>();
while (r < nums.length) {
curr.put(nums[r], curr.getOrDefault(nums[r], 0) + 1);
while (curr.size() == count.size()) {
curr.put(nums[l], curr.get(nums[l]) - 1);
if (curr.get(nums[l]) == 0) {
curr.remove(nums[l]);
}
l++;
}
r++;
res += l;
}
return res;
}
}
--------------------------------------------
--
https://i.imgur.com/5xKbxoh.jpeg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.104.111 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1745481630.A.2BB.html