赞
踩
真是越做越觉得自己所学尚浅,,
啊???????
直接上石山代码:(过不了一点)。。。。。
- class Solution:
- def firstMissingPositive(self, nums: List[int]) -> int:
- global j
- n=len(nums)
- if n==0:
- return 1
- if n==1:
- if nums[0]>=2 or nums[0]<=0:
- return 1
- else:
- return 2
-
- nums.sort()
- mn=0
- j=0
- for i in range(n-1):
- if nums[i]+1==nums[i+1]:
- j=i
- continue
- else:
- if nums[i]+1<=0:
- continue
- if nums[-1]<=0 or nums[0]>=2 or nums[i]>=2:
- return 1
- return nums[i]+1
- if j==n-2:
- if nums[0]<=1 and nums[-1]>=0:
- mn=nums[-1]+1
- else:
- mn=1
- return mn
-
太强了这思路哈希表:
- class Solution:
- def firstMissingPositive(self, nums: List[int]) -> int:
- n=len(nums)
- #hash表长
- hash_size=n+1
- for i in range(n):
- #超出范围先赋值为0
- if nums[i]<=0 or nums[i]>=hash_size:
- nums[i]=0
- for i in range(n):
- if nums[i]%hash_size!=0:
- pos=(nums[i]%hash_size)-1
- #先取余再加
- nums[pos]=(nums[pos]%hash_size)+hash_size
- for i in range(n):
- if nums[i]<hash_size:
- return i+1
- #就是n+1
- return hash_size
总结:我觉得一个关键点是将[1,n]外的点全部赋值为0,这样的话,我们就能将问题转换为[1,n]上,就能使用先前的哈希表方法了。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。