美文网首页
leetcode 448. 找到所有数组中消失的数字

leetcode 448. 找到所有数组中消失的数字

作者: Source_Chang | 来源:发表于2020-10-28 15:26 被阅读0次

leetcode

  1. 标记法
    C++:
class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {

        for ( int i = 0; i < nums.size(); ++i ) {

            int number = abs(nums[i]);
            int index = number - 1;

            if ( nums[index] > 0 ) {

                nums[index] *= -1;
            }
        }

        std::vector<int> results;
        for ( int i = 0; i < nums.size(); ++i ) {

            if ( nums[i] > 0 ) {

                results.push_back(i + 1);
            }
        }

        return results;
    }
};
  1. 原地哈希法
    C++
class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {

        for ( int i = 0; i < nums.size(); ++i ) {

            while ( nums[i] != nums[nums[i] - 1] ) {

                std::swap(nums[i], nums[nums[i] - 1]);
            }
        }

        std::vector<int> results;
        for ( int i = 0; i < nums.size(); ++i ) {

            if ( nums[i] != i + 1) {

                results.push_back(i + 1);
            }
        }

        return results;
    }
};

相关文章

网友评论

      本文标题:leetcode 448. 找到所有数组中消失的数字

      本文链接:https://www.haomeiwen.com/subject/hppzmktx.html