您的位置:首页 > 移动开发

2017年4月23日 448. Find All Numbers Disappeared in an Array[easy]

2017-04-23 16:30 78 查看
Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements of [1, n] inclusive that do not appear in this array.

Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example:
Input:
[4,3,2,7,8,2,3,1]

Output:
[5,6]


class Solution {

public:

    vector<int> findDisappearedNumbers(vector<int>& nums) {

       int max;

        vector<int> num;
for(int i=0;i<nums.size();i++) 
{
int index = abs(nums[i])-1;
nums[index] = -abs(nums[index]);  
}
for(int i=0; i<nums.size(); i++){     //统计num中对应的值没有变成负数的下标,这些下标即为没有在num中出现的数

            if(nums[i]>0){

                num.push_back(i+1);

            }

        }

        return num;

    }

};

规定了时间复杂度和空间复杂度 题目给的是引用传递 所以直接在nums上改  

引用了绝对值既能在num上根据数据修改对应下标,又能保存数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 新手 菜鸟 算法