Set Mismatch
给一个数组, 里面是从1到n, 但是有一个元素重复, 并且少一个元素, 找到重复的和丢失的数. 这个我用的是map 存一下找到了几个数, 我看有很多做法, 这个属于一般的解法.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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}; } } |