博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Missing Number
阅读量:4132 次
发布时间:2019-05-25

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

题目描述

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,

Given nums = [0, 1, 3] return 2.

思路

注意这里并没有说给你的数组一定是有序的,只告诉你每一个数是不同的,而且只miss one;很容易想到的是sort一下,然后进行后一个元素减去前一个元素是否为1判断,这里注意对特殊情况,比如数组只有一个元素的时候,和[1,2,3]这种miss 0的情况。

另一种机智的思路是,数组的下标是0,1,2,3...nums.length-1,是固定的,数值也应是0,1,2,3,...nums.length-1,但是由于miss one 导致少了一个数他们变成了0,1,2...n,n-2...nums.length,可以发现除了少的那一个和因此多出来的nums.length其他都是成对出现的,所以只要把这些成对出现的数字消去,剩下的就是少的那个数和nums.length,再把nums.length去掉即可。

根据这种思路可以采取异或的方式,把所有的下标和数值异或,再和nums.length异或得到的就是那个miss one

int res = 0;int i = 0;for (; i < nums.length; i++) {    res = res ^ i ^ nums[i];  }return res ^ i;

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

你可能感兴趣的文章
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>