算法—— 1到n中减少了一个数,顺序被打乱,找出缺失的数

Posted bopo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法—— 1到n中减少了一个数,顺序被打乱,找出缺失的数相关的知识,希望对你有一定的参考价值。

问题

有0-n这n+1个数,但是其中丢了一个数,请问如何找出丢了哪个数?

五种方法

1)用1+2+...+n减去当前输入数据的总和。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】

2)用12...*n除以当前输入数据的总积。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】

3)用1^2^...^n的结果在逐个异或当前输入数据。时间复杂度:O(n) 空间复杂度:O(1)

4)对输入数据排序,然后从头到尾遍历一次。时间复杂度O(nlogn) 空间复杂度O(1)

5) 对输入数据进行Hash,然后从头到尾遍历一次。时间复杂度O(n) 空间复杂度O(n)

 

以上是关于算法—— 1到n中减少了一个数,顺序被打乱,找出缺失的数的主要内容,如果未能解决你的问题,请参考以下文章

洗牌算法C++将数组的元素顺序随机打乱(条件概率证明算法充分随机)

php中给出一组数组,要求把这组数据打乱顺序后输出,而且不能重复!!请高手帮忙呀!

如何打乱一组数的顺序?

冒泡排序算法

在word中插入图片,为啥图片的顺序被打乱?

常用算法Java实现之希尔排序