Near2Power
已知n是正数
返回大于等于,且最接近n的,2的某次方的值
package algorithmbasic.leetcode.coding1;
public class Near2Power {
//思路:二进制形式全变成1111... 然后再加1
public static final int tableSizeFor(int n) {
//刚上来n就是2的某次方的值
//1000
//111
//11000
//10111
//11111
n -= 1;
n = n | n >>> 1;
n = n | n >>> 2;
n = n | n >>> 4;
n = n | n >>> 8;
n = n | n >>> 16;
//全变成1111.。。
return n + 1;
}
}
这篇文章介绍了如何使用Java编程解决LeetCode题目,通过位操作技巧找到大于等于给定正数n且最接近的2的幂。代码中使用了位移操作(n-=1,n|=n>>1,...),以将n转换为二进制表示时全为1的状态再加1。
878

被折叠的 条评论
为什么被折叠?



