快速找到1到N中缺少的一个数字
来源:互联网 发布:oracle数据库cpu过高 编辑:程序博客网 时间:2024/05/19 20:19
传说浙大有一个面试题是要快速找到1到N中缺少的一个数字,有一个很经典的做法是把N-1个数字加和,减去1到N的和,但是当N非常很大的时候,复杂度为O(Nlog(N^2)/32) = O(Nlog(N)/16),和会达到2logN的bit位。
我偶然想到了一个方法,设f(n) = 1 xor 2 xor … xor n
f(n) =
n , n % 4 == 0
1 , n % 4 == 1
n +1 , n % 4 == 2
0 , n % 4 == 3
设输入的n-1个数字的异或和为s, 那么所求答案就为 f(n) - s. 复杂度为O(Nlog(N)/32),即只使用log(N)长度的bit位。
不知道有没有更加优秀的方法,请各位大佬指点。
阅读全文
1 0
- 快速找到1到N中缺少的一个数字
- 给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。
- 求N+1 个数字中缺少的那个数值
- 有一个数组data[n-1]存储了1~n中的n-1个数,问data中缺少的数字是多少【每日一题】
- 数组中存放0到n中的缺少一个数的连续数,找出该缺少的数
- 快速排序查找 N个整数中,找到前M(M<<N)个最大的数字
- poj 1019 求一个1到n的序列中,第k个数字是多少
- js 找出从1到n的序列中缺少的三个数
- 在有序递增数组中查找一个缺少的数字
- 从1到n的数字中1的个数
- 计算0到N中包含数字1的个数
- 0到N中包含数字1的个数
- 找出1到n中重复的数字
- 快速排序搜索一个数组中第N大的数字
- 给出1..n的一个排列,其中缺少2个元素,用O(1)的空间找到那2个缺失的元素
- 1-N互不相等的自然数,缺少一个找出来
- 数组中重复的数字(n个数字,且数字都在0到n-1范围内)
- 输入一个int型数字n,输出从1到最长为n位的全部数字
- js/jquery各种宽高的理解和应用
- 系统学习ARM之一 --ARM简介
- 设置TextView字间距和行间距
- 使用spring的动态路由实现数据库负载均衡
- 安卓隐藏虚拟键
- 快速找到1到N中缺少的一个数字
- 源码(六)
- Python Socket 网络编程
- oracle dg迁移主库
- 矩形覆盖问题
- J2EE J2SE J2ME 是什么
- apche配置
- openoffice 就是垃圾!
- Java线程池ExecutorService