[LeetCode]442. Find All Duplicates in an Array

来源:互联网 发布:电信机顶盒安装软件 编辑:程序博客网 时间:2024/06/05 05:32

https://leetcode.com/problems/find-all-duplicates-in-an-array/

由于要不用额外空间,因此还是染色法。一次遍历,把对应位置染成负数,如果本身已经是负数,说明之前已经出现过一次了,然后就加到结果里。



public class Solution {    public List<Integer> findDuplicates(int[] nums) {        List<Integer> res = new LinkedList<>();        if (nums == null || nums.length == 0) {            return res;        }        for (int i = 0; i < nums.length; i++) {            int index = Math.abs(nums[i]);            if (nums[index - 1] < 0) {                res.add(index);            }            nums[Math.abs(nums[i]) - 1] = -nums[Math.abs(nums[i]) - 1];        }        return res;    }}


0 0