算法—— 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++将数组的元素顺序随机打乱(条件概率证明算法充分随机)