首页 > 代码库 > Find All Numbers Disappeared in an Array
Find All Numbers Disappeared in an Array
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 of [1, n] inclusive that do not appear 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:
[5,6]
1 class Solution { 2 public: 3 vector<int> findDisappearedNumbers(vector<int>& nums) { 4 // put all numbers in correct positions 5 for (int i = 0; i < nums.size(); i++) { 6 while (nums[i] != -1 && i != nums[i] - 1) { 7 if (nums[i] == nums[nums[i] - 1]) { 8 nums[i] = -1; 9 break; 10 } 11 swap(nums[i], nums[nums[i] - 1]); 12 } 13 } 14 15 // put all vacant numbers into the result array 16 vector<int> result; 17 for (int i = 0; i < nums.size(); i++) { 18 if (nums[i] == -1) 19 result.push_back(i + 1); 20 } 21 return result; 22 } 23 };
Find All Numbers Disappeared in an Array
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。