LeetCode 448. Find All Numbers Disappeared in an Array & 442. Find All Duplicates in an Array
阿新 • • 發佈:2018-07-18
red res cat leet pub ear index 意思 ++
這兩道題很有意思,由於元素為1~n,因此每個元素的值-1(映射到0~n-1)就可以直接當做下標。這樣將 nums 中對應下標的元素 *-1 以i表示 index+1 這個元素出現過了,能節省存儲的空間。
448. Find All Numbers Disappeared in an Array
class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { for (int i=0;i<nums.size();++i){int index=abs(nums[i])-1; if (nums[index]>0) nums[index]*=-1; } vector<int> res; for (int i=0;i<nums.size();++i){ if (nums[i]>0) res.push_back(i+1); } return res; } };
442. Find All Duplicates in an Array
classSolution { public: vector<int> findDuplicates(vector<int>& nums) { vector<int> res; for (int i=0;i<nums.size();++i){ int index=abs(nums[i])-1; if (nums[index]>0) nums[index]*=-1; else res.push_back(index+1); }return res; } };
LeetCode 448. Find All Numbers Disappeared in an Array & 442. Find All Duplicates in an Array