Set Mismatch

给一个数组, 里面是从1到n, 但是有一个元素重复, 并且少一个元素, 找到重复的和丢失的数. 这个我用的是map 存一下找到了几个数, 我看有很多做法, 这个属于一般的解法.

class Solution {
    public int[] findErrorNums(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        int m = -1;
        int d = -1;
        for(int n : nums) {
            map.put(n, map.getOrDefault(n, 0)+1);
        }
        for(int i = 1; i <= nums.length; i++) {
            if(map.get(i) == null) {
                m = i;
            } else if(map.get(i) == 2) {
                d = i;
            }
        }
        return new int[]{d, m};
    }
}