Computer >> Máy Tính >  >> Lập trình >> Python

Thiếu tích cực đầu tiên trong Python


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