剑指 Offer 53 - II. 0~n-1中缺失的数字

简介: 剑指 Offer 53 - II. 0~n-1中缺失的数字

链接: 原文链接.

class Solution:
    # 自己写的方法,比较啰嗦一些。
    # def missingNumber(self, nums: List[int]) -> int:
    #     if nums[0] != 0:
    #         return 0
    #     else:
    #         for i in range(len(nums)):
    #             if i == len(nums)-1:
    #                 return i+1
    #             if nums[i] != nums[i+1]-1:
    #                 return i+1
    # 大佬写的代码,排序数组中的二分问题,用的是二分法解决的。
    # 二分查找的大概思路是:
    # [0 1 2 3 5]
    # start=0,end=len(list)-1
    # middle = (start+end)//2
    # 判断一下list[middle]是否等于middle
    # 如果等于,则需要找的数在 (middle+1)-end 的范围里
    # 否则,就在 0-(middle-1)的范围里.
    # 循环
    #  0 4 2
    #  3 4 3
    #  4 4 4
    def missingNumber(self, nums: List[int]) -> int:
        start, end = 0, len(nums)-1
        while start <= end: 
            middle = (start+end)//2
            if nums[middle] == middle: start += 1
            else: end -= 1
        return start
相关文章
|
2月前
|
存储 搜索推荐 C++
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
本文是作者针对《剑指 Offer(第 2 版)》中 "数组中重复的数字" 问题的刷题记录,分享了使用排序算法和相邻比较大小两种方法来找出数组中的重复数字,并提供了C++的实现代码。
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
|
6月前
|
索引
剑指 Offer 53 - II:0~n-1中缺失的数字
剑指 Offer 53 - II:0~n-1中缺失的数字
30 0
|
6月前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
27 0
|
6月前
剑指 Offer 44:数字序列中某一位的数字
剑指 Offer 44:数字序列中某一位的数字
31 0
|
6月前
剑指 Offer 56 - II:数组中数字出现的次数 II
剑指 Offer 56 - II:数组中数字出现的次数 II
48 0
|
6月前
剑指 Offer 56 - I:数组中数字出现的次数
剑指 Offer 56 - I:数组中数字出现的次数
48 0
|
6月前
剑指 Offer 57:和为s的两个数字
剑指 Offer 57:和为s的两个数字
39 0
|
6月前
剑指 Offer 20:表示数值的字符串
剑指 Offer 20:表示数值的字符串
42 0
|
6月前
|
机器学习/深度学习 Windows
剑指 Offer 62:圆圈中最后剩下的数字
剑指 Offer 62:圆圈中最后剩下的数字
45 0
|
索引 Cloud Native
【刷题日记】剑指 Offer 53 - II. 0~n-1中缺失的数字
本次刷题日记的第 22 篇,力扣题为:剑指 Offer 53 - II. 0~n-1中缺失的数字 ,简单
【刷题日记】剑指 Offer 53 - II. 0~n-1中缺失的数字