码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2018-07-18 17:18:07      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:cat   ++   映射   div   pre   lse   元素   leetcode   因此   

这两道题很有意思,由于元素为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

标签:cat   ++   映射   div   pre   lse   元素   leetcode   因此   

原文地址:https://www.cnblogs.com/hankunyan/p/9329164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!