本人用的是充分考虑情况之后,将一个数字本身应有的数字构成新列表,然后将两个列表进行比较。代码如下:
class Solution:
def missingNumber(self, nums: List[int]) -> int:
l = []
if len(nums)==1:
if nums[len(nums)-1]==1:
return 0
elif nums[len(nums)-1]==0:
return 1
elif len(nums)>1:
for i in range(nums[len(nums)-1]+1):
l.append(i)
for j,k in zip(range(len(l)),range(len(nums))):
if l[j]<nums[k]:
return l[j]
elif l[j]==nums[k]:
if k==len(nums)-1:
return l[-1]+1
较为好的方法是采用二分法
class Solution:
def missingNumber(self,nums:List[int])->int:
i,j=0,len(nums)-1
while i<=j:
m=(i+j)//2 #获得列表中间值的索引
if nums[m]==m:
i=m+1
else:
j=m-1
return i