首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组中缺少整数

数组中缺少整数
EN

Stack Overflow用户
提问于 2014-01-08 09:46:44
回答 4查看 364关注 0票数 0

给定一个正整数列表,找出不在列表中的最小整数。

例如: list=7,4,9,1,答案是2。

计算列表中最小整数的最快算法应该是什么(不进行排序)?

注意整数的列表很大,所以不可能散列?

EN

回答 4

Stack Overflow用户

发布于 2014-01-08 09:50:13

O(n*log(n))

在O(n*log(n))中运行的最简单的算法是:

  • 将数组排序为0(n*log(N))
  • 遍历数组,找出不在最大O(n)的列表中的最小元素。

O(n)和O(1)额外空间

在O(n)中存在一个算法。它的工作如下:

  • 遍历数组。对于每一个正数,你把arrayi的值设为-1。忽略大于数组大小的值。
  • 第二次遍历数组,找到第一个不是负的索引。(O(n))
票数 0
EN

Stack Overflow用户

发布于 2014-01-08 09:50:16

在一般情况下,我

  1. 对数组进行排序(根据典型数组选择相关的排序,或者使用自适应排序功能)
  2. 遍历数组以查找第一个丢失的整数。
票数 0
EN

Stack Overflow用户

发布于 2014-01-08 10:55:56

如果数字是唯一的,则可以在O(nlogn)中使用二进制搜索。缺失的值最多为n。

  • 设置低= 0,高= n,
  • 设置a=低+(高-低)/2
  • 在低和高之间的计数值,小于或等于一个
    • 如果小于一半,重复高=a

  • 在低和高之间的计数值大于一个
    • 如果低=a的重复次数少于一半

  • 否则没有解决方案(所有值都在数组中)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20992031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档