非循环实现near2power

该算法利用位运算技巧,通过x的补码寻找满足条件的2的次方数。首先将n减1,然后依次进行右移并按位或操作,最后处理负数情况,整个过程时间复杂度为O(1),空间复杂度也为O(1)。
摘要由CSDN通过智能技术生成

题目描述

不用循环实现找到≥x最小的2的次方数

思路

利用位运算,x的补码位0011则符合的数补码为0100,利用这个原理做下面的操作,时间:O(1),空间:O(1)

代码

public static final int tableSizeFor(int n) {
   n--;//防止本身满足条件
   n |= n >>> 1;
   n |= n >>> 2;
   n |= n >>> 4;
   n |= n >>> 8;
   n |= n >>> 16;
   return (n < 0) ? 1 : n + 1;//如果是负数返回一
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值