S2 icon indicating copy to clipboard operation
S2 copied to clipboard

0041. First Missing Positive | LeetCode Cookbook

Open halfrost opened this issue 5 years ago • 5 comments

https://books.halfrost.com/leetcode/ChapterFour/0001~0099/0041.First-Missing-Positive/

halfrost avatar Oct 08 '20 17:10 halfrost

這樣是不符合 " constant extra space."

goalbased avatar Jan 14 '21 04:01 goalbased

這樣是不符合 " constant extra space."

@goalbased 我这里的 map 是恒定的空间呀。

halfrost avatar Jan 14 '21 06:01 halfrost

map是O(n),不是O(1),如果是O(n)的話,我想這題應該放在EASY,我一開始解法跟你一樣的,參考了其他人的解法才發現的,當然也可能是我誤解題目意思了。

goalbased avatar Jan 14 '21 07:01 goalbased

map是O(n),不是O(1),如果是O(n)的話,我想這題應該放在EASY,我一開始解法跟你一樣的,參考了其他人的解法才發現的,當然也可能是我誤解題目意思了。

@goalbased 🙏🏻 明白了。我误解了 "constant extra space","constant extra space" 指的是不使用额外的空间。我再想想不使用额外空间怎么解答。

halfrost avatar Jan 14 '21 09:01 halfrost

func firstMissingPositive(nums []int) int {
	// 数组长度为n,答案可能的取值为[1, n+1]
	// 原地哈希:index-i => number-i+1
	n := len(nums)
	for i := 0; i < n; i++ {
		for 1 <= nums[i] && nums[i] <= n && nums[i] != nums[nums[i]-1] {
			nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
		}
	}

	for i := 0; i < n; i++ {
		if i+1 != nums[i] {
			return i + 1
		}
	}
	return n + 1
}

Moonzi-594 avatar Oct 31 '22 10:10 Moonzi-594