1、题目
2、分析
方法一
手写快排,然后依次找出不在对应位置的值即可,对应代码一
方法二
3、代码
代码一
# 手写快排,然后得到
class Solution:
def missingNumber(self, nums: List[int]) -> int:
# 快速排序
self.quick_sort(nums,0,len(nums)-1)
# 如果位置和值对不上,那么就说明这个值是缺少的
for i in range(len(nums)):
if nums[i] != i:
return i
return len(nums)
def quick_sort(self, nums,left,right):
if left >= right:
return
# 把nums数组中的 [left,right] 排序
mid = self.partition(nums,left,right)
# 递归对两个数组进行排序
self.quick_sort(nums,left,mid-1)
self.quick_sort(nums,mid+1,right)
def partition(self,nums,left,right):
pivot = nums[left] # 得到pivot的值
while(left < right):
while(right > left and nums[right] >= pivot):
right -=1
nums[left] = nums[right]
while(left < right and nums[left] <= pivot):
left += 1
nums[right] = nums[left]
nums[left] = pivot
return left #
代码二