题目链接:
LeetCode 442 — Find All Duplicates in an Array
问题分析: 需要o(n)的时间复杂度并且不能使用额外的存储空间。找出数组中的重复元素。
AC代码:
public class Problem442 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] aa ={2,2};
findDuplicates(aa);
}
public static List<Integer> findDuplicates(int[] nums) {
List<Integer> list =new ArrayList<Integer>();
for(int i=0;i<nums.length;i++){
if(nums[Math.abs(nums[i])-1]>0)
nums[Math.abs(nums[i])-1]=nums[Math.abs(nums[i])-1]*(-1);
else{
list.add(Math.abs(nums[i]));
}
}
return list;
}
}