1、题目描述
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 }