【Leetcode】448. Find All Numbers Disappeared in an Array

思路:

 

用标志位的方法去做,把原数组中出现的数应该在的位置上的数置为负值,然后重新遍历如果大于0,说明未置为负值过,也就是表示从未出现过。

 

public class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
        List<Integer> result = new ArrayList<Integer>();
        int len = nums.length;
        for (int i = 0; i < len; i++) {
            int index = Math.abs(nums[i]) - 1;
            if (nums[index] > 0)
                nums[index] = -nums[index];
        }
        for (int i = 0; i < len; i++) {
            if (nums[i] > 0)
                result.add(i + 1);
        }
        return result;
    }
}

Runtime:18ms

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.duanlonglong.com/qdjy/404.html