Giả sử chúng ta có một mảng số nguyên chưa được sắp xếp; chúng ta phải tìm số dương nhỏ nhất còn thiếu. Vì vậy, nếu mảng giống như [4, -3, 1, -1], thì kết quả sẽ là 2.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
đặt i:=0 và cập nhật số mảng bằng cách thêm một số 0 vào trước tất cả các số
-
cho tôi trong phạm vi từ 0 đến độ dài của nums
-
trong khi nums [i]> =0 và nums [i]
-
nums [nums [i]]:=nums [i]
-
nums [i]:=nums [nums [i]]
-
-
-
num:=1
-
cho tôi trong phạm vi từ 1 đến độ dài của nums
-
nếu num =nums [i], thì hãy tăng num lên 1
-
-
trả về số
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
class Solution(object): def firstMissingPositive(self, nums): i = 0 nums = [0] + nums for i in range(len(nums)): while nums[i]>=0 and nums[i]<len(nums) and nums[nums[i]]!=nums[i]: nums[nums[i]],nums[i] = nums[i],nums[nums[i]] num = 1 for i in range(1,len(nums)): if num == nums[i]: num+=1 return num ob = Solution() print(ob.firstMissingPositive([4,-3,1,-1]))
Đầu vào
[4,-3,1,-1]
Đầu ra
2