Leetcode 448 找到所有数组中消失的数字
Posted Z-Pilgrim
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 448 找到所有数组中消失的数字相关的知识,希望对你有一定的参考价值。
https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/
模拟一下还是比较容易能找到解法 但是官方答案更骚
class Solution
public:
vector<int> findDisappearedNumbers(vector<int>& nums)
for(int i = 0; i < nums.size(); )
if(nums[i] == i+1)
i++;
else
int new_idx = nums[i] - 1;
if(nums[new_idx] == new_idx + 1)
i++;
else
swap(nums[i], nums[new_idx]);
vector<int> ans;
for(int i = 0; i < nums.size(); i++)
if(nums[i] != i+1)
ans.push_back(i+1);
return ans;
;
等于是利用值域没有用完 做了一个原地hash
int n = nums.size();
for (auto& num : nums)
int x = (num - 1) % n;
nums[x] += n;
vector<int> ret;
for (int i = 0; i < n; i++)
if (nums[i] <= n)
ret.push_back(i + 1);
return ret;
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/solution/zhao-dao-suo-you-shu-zu-zhong-xiao-shi-d-mabl/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是关于Leetcode 448 找到所有数组中消失的数字的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode448-找到所有数组中消失的数字(原地数组)
[LeetCode] 448. 找到所有数组中消失的数字 ☆