s*n
2 楼
刚腾出来一小块地,不知道种啥,感觉毛豆或者花生挺好管理的,五区现在种毛豆花生
来得及吗?
来得及吗?
k*r
11 楼
被2除看余数吗?余数是1,counter++,商继续直到为1
l*a
12 楼
怎么做都是lg(n)。
n为该数十进制的值,
bit的个数为lg(n)。
n为该数十进制的值,
bit的个数为lg(n)。
b*e
16 楼
移位神马的弱爆了,用这个: x&(x-1)
l*b
18 楼
int getBitsOne(int c)
{
c = ((c & 0xaaaaaaaa)>>1) + (c & 0x55555555);
c = ((c & 0xcccccccc)>>2) + (c & 0x33333333);
c = ((c & 0xf0f0f0f0)>>4) + (c & 0x0f0f0f0f);
c = ((c & 0xff00ff00)>>8) + (c & 0x00ff00ff);
c = ((c & 0xffff0000)>>16) + (c & 0x0000ffff);
return c;
}
{
c = ((c & 0xaaaaaaaa)>>1) + (c & 0x55555555);
c = ((c & 0xcccccccc)>>2) + (c & 0x33333333);
c = ((c & 0xf0f0f0f0)>>4) + (c & 0x0f0f0f0f);
c = ((c & 0xff00ff00)>>8) + (c & 0x00ff00ff);
c = ((c & 0xffff0000)>>16) + (c & 0x0000ffff);
return c;
}
d*x
19 楼
can u do it better?
【在 l*******b 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: int getBitsOne(int c)
: {
: c = ((c & 0xaaaaaaaa)>>1) + (c & 0x55555555);
: c = ((c & 0xcccccccc)>>2) + (c & 0x33333333);
: c = ((c & 0xf0f0f0f0)>>4) + (c & 0x0f0f0f0f);
: c = ((c & 0xff00ff00)>>8) + (c & 0x00ff00ff);
: c = ((c & 0xffff0000)>>16) + (c & 0x0000ffff);
: return c;
: }
【在 l*******b 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: int getBitsOne(int c)
: {
: c = ((c & 0xaaaaaaaa)>>1) + (c & 0x55555555);
: c = ((c & 0xcccccccc)>>2) + (c & 0x33333333);
: c = ((c & 0xf0f0f0f0)>>4) + (c & 0x0f0f0f0f);
: c = ((c & 0xff00ff00)>>8) + (c & 0x00ff00ff);
: c = ((c & 0xffff0000)>>16) + (c & 0x0000ffff);
: return c;
: }
c*t
26 楼
正解!
我电面被问到,给了lg(n)解法,bug free,对方似乎不太满意啊。
问一下如果没做过,有人能直接给这个解吗?还是我bit operation太弱?
【在 l*******b 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: int getBitsOne(int c)
: {
: c = ((c & 0xaaaaaaaa)>>1) + (c & 0x55555555);
: c = ((c & 0xcccccccc)>>2) + (c & 0x33333333);
: c = ((c & 0xf0f0f0f0)>>4) + (c & 0x0f0f0f0f);
: c = ((c & 0xff00ff00)>>8) + (c & 0x00ff00ff);
: c = ((c & 0xffff0000)>>16) + (c & 0x0000ffff);
: return c;
: }
我电面被问到,给了lg(n)解法,bug free,对方似乎不太满意啊。
问一下如果没做过,有人能直接给这个解吗?还是我bit operation太弱?
【在 l*******b 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: int getBitsOne(int c)
: {
: c = ((c & 0xaaaaaaaa)>>1) + (c & 0x55555555);
: c = ((c & 0xcccccccc)>>2) + (c & 0x33333333);
: c = ((c & 0xf0f0f0f0)>>4) + (c & 0x0f0f0f0f);
: c = ((c & 0xff00ff00)>>8) + (c & 0x00ff00ff);
: c = ((c & 0xffff0000)>>16) + (c & 0x0000ffff);
: return c;
: }
l*b
29 楼
这个其实也是log n的解法呀,n = 32位算5步对应log 32, 更好的不知道了。。
多看看就知道了吧,和教calculus的学生一样,总问这个有什么一般的方法,那只好告
诉他们把吉米多维奇上的积分都解了就可以了,哈哈
多看看就知道了吧,和教calculus的学生一样,总问这个有什么一般的方法,那只好告
诉他们把吉米多维奇上的积分都解了就可以了,哈哈
h*n
33 楼
what about this algorithm?
int GetBitsNum(int num)
{
int res = 0;
while(num)
{
res++;
num &= (num-1);
}
return res;
}
It should be better that log N, the number of operation is only proportional
to the number of 1 bit in the binary representation.
for example, if input is 1000000, then only one iteration is enough.
if input is 1100000, then two iterations and so on.
Of course, you can achieve real O(1) complexity by creating a huge hashtable
for all the possible integers in advance.
int GetBitsNum(int num)
{
int res = 0;
while(num)
{
res++;
num &= (num-1);
}
return res;
}
It should be better that log N, the number of operation is only proportional
to the number of 1 bit in the binary representation.
for example, if input is 1000000, then only one iteration is enough.
if input is 1100000, then two iterations and so on.
Of course, you can achieve real O(1) complexity by creating a huge hashtable
for all the possible integers in advance.
Q*e
36 楼
cnt = 0;
while (x) {
cnt++;
x &= (x-1);
}
while (x) {
cnt++;
x &= (x-1);
}
相关阅读
【参赛】小矮子里挑出的小将军绣球不开花了肿么办?大家都怎么贴图呢现在[开心一笑]无题桃树开花,狗狗上树砖家说今年会有毁灭性太阳风暴厚着脸皮问问:谁家种紫薯了啊?300油麦菜,300塌棵菜,一颗不能少!寒梅 Flowering Quince调查一下,这里的花匠园丁们希望收到什么样的新年礼物?这地里种的是啥东东?说说美国与中国的四季日期计算法的差异 (转载)有人种过/有种子for峨嵋豆, AKA.宽扁豆吗?荷兰郁金香一碗生的肉末坏了,能沤肥吗?育苗准备豌豆种下去两个星期了, 一直不见发芽, 挖出来看看 :))平生见过最贵的一朵花,有图有真相新手求助:HD刚买的raspberry就要开花了?有图有真相经历今冬数轮寒流磨难以后, 俺家还剩下以下菜菜幸存: