刷題448. Find All Numbers Disappeared in an Array

一、題目說明

題目448. Find All Numbers Disappeared in an Array,給定有n個數的數組,每個數1<=a[i]<=n,其中一些數字出現2次,一些出現一次。計算包含於1-n中未在數組中出現的數字。難度是Easy!

二、我的解答

這個題目,思考一下,一次循環,將數字i放到第i+1上面。然後不在位置上的就是了。

class Solution{
	public:
		vector<int> findDisappearedNumbers(vector<int>& nums){
			vector<int> res;
			int len = nums.size();
			for(int i=0;i<len;i++){
				while(nums[i]!= i+1 && nums[nums[i]-1] !=nums[i]){
					swap(nums[i],nums[nums[i]-1]);
				}
			}
			
			for(int i=0;i<len;i++){
				if(nums[i] != i+1){
					res.push_back(i+1);
				}
			}
			return res;
		}
};

性能如下:

Runtime: 112 ms, faster than 92.54% of C++ online submissions for Find All Numbers Disappeared in an Array.
Memory Usage: 14.9 MB, less than 86.67% of C++ online submissions for Find All Numbers Disappeared in an Array.

三、優化措施

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章