码迷,mamicode.com
首页 > 编程语言 > 详细

【python-面试题53-循环排序】寻找缺失的数

时间:2020-02-24 20:24:54      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:nbsp   接下来   pre   个数   有一个   技术   图片   面试题   class   

问题描述:

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

示例 1:

输入: [0,1,3]
输出: 2
示例 2:

输入: [0,1,2,3,4,5,6,7,9]
输出: 8

 

循环排序思想:一般可用循环排序解决的问题是:数值一般在一个区间,且是要你在排好序/翻转过的数组中寻找丢失的/重复的/最小的元素。

例如:

a = [6,2,4,3,1,5]
for k,v in enumerate(a):
    if a[k] != v-1:
        a[k],a[v-1] = a[v-1],a[k]
print(a)

如果当前元素不是在其应该的位置上,则交换该元素和在其应该位置上的元素,一趟之后整个数组就是有序的了

接下来解决这一题:

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        for i,j in enumerate(nums):
            if i != j:
                return i
        return len(nums)

注意,可能返回的是最后一个元素。

结果:

技术图片

【python-面试题53-循环排序】寻找缺失的数

标签:nbsp   接下来   pre   个数   有一个   技术   图片   面试题   class   

原文地址:https://www.cnblogs.com/xiximayou/p/12358470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!