从一个无序数组中找出缺少的值。
来源:互联网 发布:js 滚动延迟加载 编辑:程序博客网 时间:2024/05/02 00:21
题目:一个无序数组里有n-1个不重复正整数,范围从1到n,唯独缺少一个整数。如何找出这个缺失的整数?
解法一:
创建一个HashMap,以1到n为键,值都是0 。然后遍历整个数组,每读到一个整数,就找到HashMap当中对应的键,让其值加一。
由于数组中缺少一个整数,最终一定有n-1个键对应的值等于1, 剩下一个键对应的值等于0。遍历修改后的HashMap,找到这个值为0的键。
假设数组长度是N,那么该解法的时间复杂度是O(1),空间复杂度是O(N)。
解法二:
先把数组元素进行排序,然后遍历数组,检查任意两个相邻元素数值是否是连续的。如果不连续,则中间缺少的整数就是所要寻找的;如果全都连续,则缺少的整数不是1就是n。
假设数组长度是N,如果用时间复杂度为O(N*LogN)的排序算法进行排序,那么该解法的时间复杂度是O(N*LogN),空间复杂度是O(1)。
解法三:
很简单也很高效的方法,先算出1+2+3….+n的和,然后依次减去数组里的元素,最后得到的差,就是唯一缺失的整数。
假设数组长度是N,那么该解法的时间复杂度是O(N),空间复杂度是O(1)。
0 0
- 从一个无序数组中找出缺少的值。
- 从一个数据元素无序的整型数组中找出最小的两个数的下标
- 在一个无序的数组中找出最长的等差数列
- 找出一个无序数组的中位数
- java 实现从无序数组中 找出第k大的数, 无序数组充许有重复元素
- 从一个无序的数组中查找遗漏的数
- 给定一个无序整型数组,找出数组中未出现的最小整数
- 从长度为M的无序数组中找出N个最大的数
- 在一个无序整型数组中找出第k小的数字
- 面试题—— 找出一个无序整型数组中第k大的数。
- 给定一个数组,找出数组缺少的最小的正整数
- 数组中存放0到n中的缺少一个数的连续数,找出该缺少的数
- 找出无序数组中最小的前k个数
- 找出无序数组中最小的前k个数
- 从一个数组中找出众数,及其出现的次数
- 从一个无序的数组中查找二个遗漏的数
- 算法---从一个数组(或者集合中)找出和为某个值的下标
- [算法练习]从一个正数数组中找出重复的数,假设数组的值的范围都小于65536
- Android OpenGLES2.0(八)——纹理贴图之显示图片
- Atitit 团队建设的知识管理
- Android自定义View的三种实现方式
- 欢迎使用CSDN-markdown编辑器
- 内存
- 从一个无序数组中找出缺少的值。
- HTTP缓存的理解
- 如 何 做 研 究 ---对研究生们的忠告
- apue第10章 信号
- 常用的时间序列算法模型
- iOS通用链接配置
- android studio打包apk
- 恐龙技术生存体验(三 眼花缭乱)
- AngularJS很基础的记录