為什麼不能nums這樣賦值呢?
nums[nums[i]] = nums[i]呢
例如 如果陣列中存在3 那麼我們可不可以nums[3] = 3呢?
這樣最後的結果會不會和 [0, 1, 2, 3, 4, 5]嗎?
然後對這個陣列從1開始遍歷不就好了嗎
這樣做事不行的,因為[1,2,3,0]這樣最後的結果就是[1, 1, 0, 3]。
因為值1 會對陣列中索引為1的值進行修改,然後陣列中索引為1的原來的值就會沒了。
而加n,然後對這個索引出的值求對n的餘數, 就還是原來的數了。
所以這樣是不行的。
class solution:
def firstmissingpositive(self, nums):
n = len(nums)
for i in range(n):
if nums[i] < 0 or nums[i] >= n:
nums[i] = 0
for i in range(n):
nums[nums[i] % n] += n
for i in range(1, n):
if nums[i] < n:
return i
return n
Python 第乙個缺失的正整數
給定乙個陣列a 0 n 1 找到從1開始,第乙個不在陣列中的正整數。如3,5,1,2,3,7,14,8輸出4 思路 將找到的元素放到正確的位置上,如果最終發現某個元素一直沒有找到,則該元素即為所求。迴圈不變式 如果某命題初始為真,且每次更改後仍然保持該命題為真,則若干次更改後該命題仍然為真。為表述方...
Leetcode41 缺失的第乙個正整數
question 給你乙個未排序的整數陣列 nums 請你找出其中沒有出現的最小的正整數。高階 你可以實現時間複雜度為 o n 並且只使用常數級別額外空間的解決方案嗎?leetcode 41 資料範圍 0 n ums.leng th 300 0 nums.length 300 0 n ums.len...
第乙個缺失的整數
第乙個缺失的整數 給定乙個長度為n的陣列a 0,n 1 從1開始,找到第乙個不在陣列中的正整數。如 3,9,8,1,6,32 輸出為2。思路 求解該問題可以有三種策略,分別是暴力破解法 bitmap法和迴圈不變式方法。方法1 暴力破解法 看到這個題後,既然是找從1開始第乙個不在陣列a中的正整數,那最...