Python 中第一个缺失正数

pythonserver side programmingprogramming更新于 2026/1/15 5:32:17

假设我们有一个未排序的整数数组;我们必须找到最小的缺失正数。因此,如果数组为 [4, -3, 1, -1],则结果为 2。

为了解决这个问题,我们将遵循以下步骤 −

  • 设置 i := 0 并通过在所有数字前添加一个 0 来更新数组 nums

  • for i in range 0 to length of nums

    • while nums[i] >= 0 and nums[i] < nums 的长度且 nums[nums[i]] 不等于 nums[i] −

      • nums[nums[i]] := nums[i]

      • nums[i] := nums[nums[i]]

  • num := 1

  • 对于 i,范围从 1 到 nums 的长度

    • 如果 num = nums[i],则将 num 增加 1

  • 返回 num

示例

让我们看看下面的实现以便更好地理解 −

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]))

输入

[4,-3,1,-1]

输出

2

相关文章


有用资源