leetcode-448 Find All Numbers Disappeared in an Array

来源:互联网 发布:淘宝 丁丁小猫 编辑:程序博客网 时间:2024/06/05 11:39
题意:给一个长度为n,1《元素值《n,求数值1~n中没出现过的数,时间复杂度限制为O(n),除了要输出的数组,不能开额外的空间
思路:由于时间和空间的限制,所以只能在原来的数组上进行操作,由于元素值为1~n,正好对应数组的下标,所以对每个出现过的数值,把其对应的下标元素变为负值,最后遍历一遍数组,元素值大于0的下标就是没出现过的数。
class Solution {public:    vector<int> findDisappearedNumbers(vector<int>& nums) {        vector<int> arr;        for(int i = 0;i<nums.size();i++)        {            nums[abs(nums[i])-1] = -abs(nums[abs(nums[i])-1]);        }        for(int i = 0;i<nums.size();i++)        {            if(nums[i]>0)            {                arr.push_back(i+1);            }        }        return arr;    }};

阅读全文
0 0
原创粉丝点击