【Java】位运算
2015-07-15 10:49
411 查看
数组A包含了0到n的所有整数,但其中缺了一个。在这个问题中,只用一次操作无法取得数组A里某个整数的完整内容。此外,数组A的元素皆以二进制表示,唯一可用的访问操作是“从A[i]取出第j位数据”,该操作时间复杂度为常数。
请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
找出0到n之间缺失的整数,可以将数字求和在于0到n的数字之和做减法,差值就是缺失的数字
那么怎么求出每个数字呢?由于我们可以去除A[i]的每一位,那么可以将每一位左移j位再相加求和,就得到每个数字的值了。
但这样做的时间是n length(n), length为n的位数,length(n) = log2(n), 时间复杂度是O(nlog2(n)),不是要求的O(n)
请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
找出0到n之间缺失的整数,可以将数字求和在于0到n的数字之和做减法,差值就是缺失的数字
那么怎么求出每个数字呢?由于我们可以去除A[i]的每一位,那么可以将每一位左移j位再相加求和,就得到每个数字的值了。
但这样做的时间是n length(n), length为n的位数,length(n) = log2(n), 时间复杂度是O(nlog2(n)),不是要求的O(n)
相关文章推荐
- Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
- Java数据存储机制的实现
- java 去除空行程序 以及set接口的使用特征
- 聚类结果的评估指标及其JAVA实现
- Struts2拦截器的实现原理及源码剖析
- eclipse汉化教程(简单易懂)
- 基于JAVA的SNS系统ConcourseConnect
- javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
- Android电子书项目实训【服务器Struts部分】【3】
- Spring hibernate 事务的流程
- java EE复习之jsp的原理
- 一个很好的Java多线程的例子
- Java基础--异常—RuntimeException
- Java时间格式转换大全
- Java StuNote2
- eclipse 点击 open Implementation就退出eclipse
- 002.Kafka的Java访问
- Java笔试题记录
- Date、String、Calendar之间的转换
- JAVA:值传递和引用传递