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

面试题53 - II. 0~n-1中缺失的数字

一个长度为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

限制:

1 <= 数组长度 <= 10000

class Solution {
    public int missingNumber(int[] nums) {
        if(nums == null || nums.length == 0) return -1;
        int lo = 0,hi = nums.length - 1;
        while(lo < hi){
            int mi = (hi - lo) / 2 + lo;
            if(mi == nums[mi]){
                lo = mi + 1;
            }else{
                hi = mi - 1;
            }
        }
        //注: num[lo] + 1 或者 -1
        return nums[lo] == lo ? nums[lo] + 1 : nums[lo] - 1;
    }
}

原文地址:https://www.cnblogs.com/zzytxl/p/12602389.html

时间: 2024-09-30 06:26:21

53 - II. 0~n-1中缺失的数字的相关文章

剑指offer python版 0到n-1中缺失的数字

def aa(nums,n): for i in range(n): if i ==nums[i]: i +=1 else: return i print(aa([0,1,2,3,4,5,7],8)) 原文地址:https://www.cnblogs.com/xzm123/p/9869226.html

68. 0到n-1中缺失的数字

题解:在缺少一项的情况下有n个数,则一项不少的情况下一共有n+1个数. (首项+末项)*项数/2-数字累计和=缺少的数字 https://www.acwing.com/solution/acwing/content/908/ 原文地址:https://www.cnblogs.com/make-big-money/p/12333893.html

怎样查出连续数字中缺失的数字

今天遇到一个问题,是要从1-100中找到缺失的数字,而且是杂序排列,开始的时候确实有点懵,怎么弄啊,后来看了别人的idea,自己动手做了一下,在这里做个记录,大家有更好的意见,请回复啊 public class PaiXu { /** * @param args */ public static void main(String[] args) { int a[] = {1, 2, 5, 4, 6, 7, 8, 10}; int b[] = null; b = new int[10]; for

[leetcode 双周赛 11] 1228 等差数列中缺失的数字

1228 Missing Number In Arithmetic Progression 等差数列中缺失的数字 问题描述 有一个数组, 其中的值符合等差数列的数值规律, 也就是说: 在?0 <= i < arr.length - 1?的前提下, arr[i+1] - arr[i]?的值都相等. 我们会从该数组中删除一个 既不是第一个 也 不是最后一个的值, 得到一个新的数组??arr. 给你这个缺值的数组?arr, 请你帮忙找出被删除的那个数. 示例 1: 输入: arr = [5,7,11

剑指offer-面试题53_2-0~n-1中缺失的数字-二分查找

/* 题目: 寻找递增数组0~n-1中缺失的数字. */ /* 思路: 变形二分法. */ #include<iostream> #include<cstring> #include<vector> #include<algorithm> #include<map> using namespace std; int getMissingNumber(vector<int> &A, int n){ int start = 0;

LEETCODE - 1228【等差数列中缺失的数字】

C++: class Solution { public: int missingNumber(vector<int>& arr) { int subnum = abs(arr[1]-arr[0]) < abs(arr[2]-arr[1]) ? arr[1]-arr[0] : arr[2]-arr[1]; for(int i = 1; i < arr.size() ; ++ i){ if(arr[i] - arr[i-1] == 2 * subnum){ return ar

【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】

[082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->

LintCode(101)删除排序数组中的重复数字 II

题目 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]. 分析 与上题思路相同,只需要增加一个记录元素出现次数的变量即可,限制最多出现2次. Python代码 class Solution: """ @param A: a list of integers @return an integer &q

【LeetCode-面试算法经典-Java实现】【155-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)】

[154-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Would this affect the run-time complexity? How and why? Supp