leetcode-448-easy

思路一: 用数组记录

public List<Integer> findDisappearedNumbers(int[] nums) {
    int[] m = new int[nums.length];

    for (int num : nums) {
        if (num-1 <= m.length) {
            m[num-1] = 1;
        }
    }

    List<Integer> result = new ArrayList<>();
    for (int i = 0; i < m.length; i++) {
        if (m[i] == 0) {
            result.add(i+1);
        }
    }

    return result;
}

思路二: 这种思路比较巧妙,每个值+n,这样原来的数值必定大于 n

public List<Integer> findDisappearedNumbers(int[] nums) {
    List<Integer> ans = new ArrayList<>();
    int len = nums.length;
    for (int num : nums) {
        int index = (num - 1) % len;
        nums[index] += len;
    }
    for (int i = 0; i < len; i++) {
        if (nums[i] <= len) {
            ans.add(i + 1);
        }
    }
    return ans;
}
posted @ 2022-10-19 07:38  iyiluo  阅读(17)  评论(0)    收藏  举报