LeetCode题解之Find All Duplicates in an Array

时间:2022-03-13 04:37:57

1、题目描述

LeetCode题解之Find All Duplicates in an Array

2、问题分析

将数组中的元素 A[i] 放到 A[ A[i] - 1] 的位置。然后遍历一边数组,如果不满足 A[i] == i+1,则将A[i]添加到 结果中。

3、代码

 1 vector<int> findDuplicates(vector<int>& nums) {
 2         vector<int> result ;
 3         for( int i = 0; i < nums.size() ; ++i ){
 4             if( nums[i] != nums[ nums[i] - 1 ]){
 5                 std::swap( nums[i] , nums[ nums[i] - 1]);
 6                 --i;
 7             }
 8         }
 9         for( int i = 0; i < nums.size(); i++ ){
10             if( nums[i] != i+1 ){
11                 result.push_back( nums[i] );
12             }
13             
14         }
15         return result ;
16         
17     }