Had an idea for swapping values inplace until hitting a deadend and therefore making the problem smaller.
I am very new, please be gentle.
Space = O(1) , Time = O(n)
vector<int> findDisappearedNumbers(vector<int>& nums) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int target;
for(int i = 0; i < nums.size(); i++) {
target = nums[i];
while(target != nums[target-1] && target <= nums.size() ) {
int temp = nums[target-1];
nums[target-1] = target;
target = temp;
}
}
int index = 0;
for(int i = 0; i < nums.size(); i++) {
if(nums[i] != i+1){
nums[index] = i+1;
index++;
}
}
nums.resize(index);
return nums;
}