【leetcode】448. Find All Numbers Disappeared in an Array(easy,配列下付きと値のテクニック)
4186 ワード
// 448. Find All Numbers Disappeared in an Array
vector<int> findDisappearedNumbers(vector<int>& nums)
{
// on , O(n) O(1) , ,
// , index ,
// [ 4, 3, 4, 2] -> [0, 1, 1, 1] [-, +, +, +] , index
for (int i = 0; i < nums.size(); ++i)
{
int m = abs(nums[i]) - 1;
nums[m] = nums[m] > 0 ? -nums[m] : nums[m]; // -
}
vector<int>res;
for (int i = 0; i < nums.size(); ++i)
{
if (nums[i] > 0)
{
res.push_back(i + 1);
}
}
return res;
}