leetcode 数组操作
1. Find All Duplicates in an Array
- 题目要求
输入一个整数数组,1 ≤ a[i] ≤ n,n是数组长度,一些元素出现两次,其余的出现一次,找到所有出现两次的元素。 解题思路
思路一:使用hashset或者先对数组排序(Arrays.sort()),再遍历数组找到相同的元素思路二:空间复杂度是O(1)时
public List<Integer> findDuplicates(int[] nums) {
List<Integer> list = new ArrayList<>();
if(nums.length <= 1)
return list;
for(int i = 0; i < nums.length; i++){
int index = Math.abs(nums[i]) - 1;
if(nums[index] < 0){
list.add(Math.abs(index + 1));
}else{
nums[index] = -nums[index];
}
}
return list;
}