41. First Missing Positive
1.問題
2.想法
3.程式碼
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
int size = nums.size(), i = 0;
while (i < size) {
if (nums[i] <= size &&
nums[i] > 0 &&
nums[i] != nums[nums[i] - 1]) {
swap(nums, i, nums[i] - 1);
} else {
i++;
}
}
for (i = 0; i < nums.size(); i++) {
if (nums[i] != (i+1) ){
return i+1;
}
}
return size + 1;
}
private:
void swap(vector<int>& nums, int a, int b) {
int tmp = nums[a];
nums[a] = nums[b];
nums[b] = tmp;
}
};Last updated