leetcode41 缺失的第一个正数

class Solution {
public:
    int firstMissingPositive(vector& nums) {
        for (int i = 0; i < nums.size(); i++) {
		/*   一个hash   nums[i] 元素应该在nums[i] -1 的位置上
			一次交换达不到目的,所以使用while 一直到不满足条件为止
		*/

		while (nums[i] > 0 && nums[i] <= nums.size() && nums[ nums[i]-1 ] != nums[i]) {
			swap(nums[i], nums[nums[i] -1 ]);
		}
	}
	for (int i = 0; i < nums.size(); i++) {

		if (nums[i] != (i + 1)) {
			return i + 1;
		}
	}
		
		return nums.size() + 1;
    }
};

你可能感兴趣的:(leetcode41 缺失的第一个正数)