1 在做一道必须统计出现次数的题目中,使用到了map函数
Map<Integer, Integer> count = new HashMap();
for (int i = 0; i < nums.length; i++) {
count.put(x, count.getOrDefault(x, 0) + 1);
}
2 Map函数还可以记录元素初始位置和最后的位置
Map<Integer, Integer> left = new HashMap(),
right = new HashMap();
for (int i = 0; i < nums.length; i++) {
int x = nums[i];
if (left.get(x) == null) left.put(x, i);
right.put(x, i);
}
这里强调一下Map 函数Put 用法,如果Key值存在,使用Map.put(key,value),value 值会覆盖之前的value,进行更新。
class Solution {
public int findShortestSubArray(int[] nums) {
Map<Integer, Integer> left = new HashMap(),
right = new HashMap(), count = new HashMap();
for (int i = 0; i < nums.length; i++) {
int x = nums[i];
if (left.get(x) == null) left.put(x, i);
right.put(x, i);
count.put(x, count.getOrDefault(x, 0) + 1);
}
int ans = nums.length;
int degree = Collections.max(count.values());
for (int x: count.keySet()) {
if (count.get(x) == degree) {
ans = Math.min(ans, right.get(x) - left.get(x) + 1);
}
}
return ans;
}
}
作者:LeetCode
链接:https://leetcode-cn.com/problems/degree-of-an-array/solution/shu-zu-de-du-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。