我在一次面试中遇到了以下问题,请帮我解决一下,因为我完全不知道该怎么做。
N个元素的非空数组A包含非负整数K的八进制表示,即A的每个元素属于区间0;7
编写一个函数:
int bitcount_in_big_octal(const vector<int> &A);这将返回K的二进制表示中设置为1的位数。如果设置为1的位数超过10,000,000,则该函数应返回-1。
假设数组可以非常大。
假设N是1..100000范围内的整数。
发布于 2011-12-10 23:37:02
byte[]:表示中的每个八位数都应该对应于一个byte,因为你所做的一切都是计数位,所以Java的字节是有符号的并不重要。然后对于数组中的每个byte,使用现有的位计数lib,将byte转换为int并使用Integer.bitCount(...),或者滚动您自己的位,等等-要计算位这在细节上是一个Java答案(就像我链接的库),但是算法步骤对于C++来说是很好的,找到一个替换库(或者使用字典答案)。
https://stackoverflow.com/questions/8457530
复制相似问题