[LeetCode]448. Find All Numbers Disappeared in an Array

    xiaoxiao2021-03-25  171

    [LeetCode]448. Find All Numbers Disappeared in an Array

    题目描述

    思路

    使用map保存应该出现的数,然后遍历数组,把出现过的数在map中做标记,然后输入map中未被标记的数

    代码

    class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> res = {}; unordered_map<int, int> normal; for (int i = 0; i < nums.size(); ++i){ normal[i + 1] = 1; } for (int &p : nums){ normal[p] = 0; } for (auto &p : normal){ if (p.second){ res.push_back(p.first); } } return res; } };

    思路 空间复杂度O(1)

    对出现过的数标记为负,在对应位置上数字为正,则该数未出现,输出对应位置

    代码

    class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> res = {}; for (int i = 0; i < nums.size(); ++i){ int m = abs(nums[i]) - 1; nums[m] = nums[m] > 0 ? -nums[m] : nums[m]; } for (int i = 0; i < nums.size(); ++i) { if (nums[i] > 0) { res.push_back(i + 1); } } return res; } };
    转载请注明原文地址: https://ju.6miu.com/read-2669.html

    最新回复(0)