JAVA 算法中Map 使用技巧,持续更新,边学边更

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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页