1. 程式人生 > >LeetCode 448. Find All Numbers Disappeared in an Array & 442. Find All Duplicates in an Array

LeetCode 448. Find All Numbers Disappeared in an Array & 442. Find All Duplicates in an Array

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

class
Solution { 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