【442】Find All Duplicates in an Array
2017-05-27 21:50
381 查看
题目:
Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements that appear twice in this array.
Could you do it without extra space and in O(n) runtime?
Example:
Input:
[4,3,2,7,8,2,3,1]
Output:
[2,3]
思路:
将数组内的数字依次交换放入对应的下标,1-n对应nums[0 - (n-1)] 如4放在nums[3], 进行n次交换后,再从头开始遍历,若nums[ i ] != i + 1则为出现两次的元素。
代码:
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> op;
int i=0;
while(i<nums.size()) {
if (nums[i]!=nums[nums[i]-1])
swap(nums[i],nums[nums[i]-1]);
else
i++;
}
for(int i=0;i<nums.size();i++) {
if(nums[i]!=i+1)
op.push_back(nums[i]);
}
return op;
}
};
Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements that appear twice in this array.
Could you do it without extra space and in O(n) runtime?
Example:
Input:
[4,3,2,7,8,2,3,1]
Output:
[2,3]
思路:
将数组内的数字依次交换放入对应的下标,1-n对应nums[0 - (n-1)] 如4放在nums[3], 进行n次交换后,再从头开始遍历,若nums[ i ] != i + 1则为出现两次的元素。
代码:
class Solution {
public:
vector<int> findDuplicates(vector<int>& nums) {
vector<int> op;
int i=0;
while(i<nums.size()) {
if (nums[i]!=nums[nums[i]-1])
swap(nums[i],nums[nums[i]-1]);
else
i++;
}
for(int i=0;i<nums.size();i++) {
if(nums[i]!=i+1)
op.push_back(nums[i]);
}
return op;
}
};
相关文章推荐
- Leetcode 442-Find All Duplicates in an Array
- LeetCode - 442 - Find All Duplicates in an Array
- 448. Find All Numbers Disappeared in an Array and 442 Find All Duplicates in an Array
- [leetcode 442] Find All Duplicates in an Array
- leetcode442 Find All Duplicates In An Array Java
- LeetCode-442-Find All Duplicates in an Array-M
- LeetCode 442 Find All Duplicates in an Array
- 【LeetCode-442】Find All Duplicates in an Array(C++)(
- leetcode 442 Find All Duplicates in an Array C++
- LeetCode 442 --- Find All Duplicates in an Array
- [LeetCode]442 Find All Duplicates in an Array
- leetcode编程记录15 #442 Find All Duplicates in an Array
- [C语言][LeetCode][442]Find All Duplicates in an Array
- leetcode442 Find All Duplicates in an Array
- Promblem 442 Find All Duplicates in an Array
- Find All Duplicates in an Array,leetcode,442
- [LeetCode]Find All Duplicates in an Array
- Find All Duplicates in an Array
- Find All Duplicates in an Array
- Find All Duplicates in an Array 算法复杂度O(n)的C++实现