找寻数组中重复的元素

来源:互联网 发布:mac怎么装千牛 编辑:程序博客网 时间:2024/05/17 09:03

给定一个整数数组,1≤[i]≤n(n =数组的大小),其中一些元素出现两次其他的只出现一次。

找到所有两次出现在这个数组的元素。

你能做它没有额外的空间,在O(n)运行时?

example

Input:[4,3,2,7,8,2,3,1]Output:[2,3]


查找重复的元素

 public List<Integer> findDuplicates(int[] nums) {      List<Integer> res = new ArrayList();      for(int num : nums){        int n = Math.abs(num);        int index = n - 1;        if(nums[index] < 0) res.add(n);        nums[index] = -nums[index];      }      return res;    }

 
想法是把数组的元素反转为负数,后面 遇到相同下标的就是之前出现过的。


原创粉丝点击