博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] Find the Missing Number [三种方法]
阅读量:6260 次
发布时间:2019-06-22

本文共 1317 字,大约阅读时间需要 4 分钟。

Problem

Given an array contains N numbers of 0 .. N, find which number doesn't exist in the array.

Example

Given N = 3 and the array [0, 1, 3], return 2.

Note

找第一个缺失的数,可以用求和相减二分法查找,也可以用位运算XOR来做。

求和相减是先求出0到N这个等差数列的和,再减去实际数组的和,就是缺失的数,
第二种方法是,只要先按顺序排列好[0, 1, 2, 3, 4, ...],用二分法找到第一个和A[i]不相等的数i就可以了。

Solution

1. 二分法

public class Solution {    public int findMissing(int[] A) {        int len = A.length;        Arrays.sort(A);        int left = 0, right = len - 1;        while (left < right) {            int mid = left + (right - left) / 2;            if (A[mid] > mid) {                right = mid - 1;            }            else {                left = mid + 1;            }        }        return A[left] == left ? left + 1 : left;    }}

2. 求和相减法

public class Solution {    public int findMissing(int[] A) {        int len = A.length;        int sum = 0;        for (int i = 0; i < len; i++) {            sum += A[i];        }        int targetsum = len * (len + 1) / 2; //0, 1, 2,...,len, 共len+1个数,多加了一个len        return targetsum - sum;    }}

3. 异或法

public class Solution {    public int findMissing(int[] nums) {        int x = 0;        for (int i = 0; i <= nums.length; i++) {            x ^= i;        }        for (int i = 0; i < nums.length; i++) {            x ^= nums[i];        }        return x;    }}

转载地址:http://jthsa.baihongyu.com/

你可能感兴趣的文章
在SQL Server2005中进行错误捕捉
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
文本编辑器实例
查看>>
EntityFramework之一对一关系(二)
查看>>
我心中的核心组件(可插拔的AOP)~调度组件quartz.net续~任务管理器的开发(CronTrigger强大功能)...
查看>>
Html2Text
查看>>
spring boot + mybatis实现一对一,一对多的样码之一种
查看>>
Android OpenGL ES 应用(二) 纹理
查看>>
谈谈D2
查看>>
解决li在ie,firefox中行高不一致问题
查看>>
[译] OpenStack Liberty 版本中的53个新变化
查看>>
How to mount usb device in CentOS?
查看>>
机器学习中的贝叶斯方法---当后验分布无法计算时如何求得预测模型?
查看>>
Kali无法定位软件包的解决方案
查看>>
Webwork 学习之路【01】Webwork与 Struct 的前世今生
查看>>
串口调试问题 【转】
查看>>
利用客户端缓存对网站进行优化
查看>>
Elasticsearch之head插件安装之后的浏览详解
查看>>
zabbix监控-基本原理介绍
查看>>
循环神经网络(RNN)模型与前向反向传播算法
查看>>