当前位置: 首页 > news >正文

E.位运算-基础——342. 4的幂

题目链接:342. 4的幂(简单)

算法原理:

解法:位运算

写法一:仅一个1+该1在第偶数位

1ms击败35.44%

时间复杂度O(1)
4ⁿ=(2²)ⁿ,因此我们完全可以用A.每日一题——231. 2 的幂的思路来算,由于4=2<<1,在二进制中仅仅是多空了一位,因此这个1的位置只要在第偶数个位置(从0开始计数),那么该数就是4的幂
找这个位置可以直接找二进制的最高有效位,因为这个最高有效位一定为1,可以用32-Integer.numberOfLeadingZeros()来计算

写法二:类似A.每日一题——231. 2 的幂写法二:n&(n-1)

1ms击败35.44%

时间复杂度O(1)
通过写法一可知,4的幂中唯一的1在第偶数个位置,那么此时4的幂=2的幂 且 1在第偶数个位置
0x5的二进制:0101,因此0x5555 5555=0101 0101 0101 0101 0101 0101 0101 0101(共32位)
所有偶数位(从0开始数)都是1,奇数位都是0,我们仅需在此数是2的幂的前提下与0x5555555555按位与&,只要最终结果>0,那么该数就是4的幂

写法三:二项式定理

1ms击败35.44%

时间复杂度O(1)
当 k 为非负整数时,根据二项式定理:
4ᵏ=(3+1)ᵏ=Cₖ⁰3ᵏ1⁰+Cₖ¹3ᵏ⁻¹1¹+Cₖ²3ᵏ⁻²1²+……+Cₖᵏ3⁰1ᵏ
上式同时%3:
除最后一项Cₖᵏ3⁰1ᵏ =1外,其余每一项都至少包含一个因子3,因此这些项%3后均为0
因此可得出4ᵏ%3=1
为了能保证此数是2的幂,需要两边同时乘以2:
2×4ᵏ%3= 2
据此,在 n 是 2 的幂的前提下,我们可以通过n%3的结果判断:
此时n%3=1,是4的幂:(2ᵏ)²=4ᵏ
此时n%3=2,不是4的幂:2ᵏ⁺¹=2×4ᵏ

Java代码:

class Solution { //写法一:仅一个1+该1在第偶数位 public boolean isPowerOfFour(int n) { return Integer.bitCount(n)==1&&((32-Integer.numberOfLeadingZeros(n))%2==1); } }
class Solution { //​写法二:类似A.每日一题——231. 2 的幂写法二:n&(n-1) public boolean isPowerOfFour(int n) { return n>0&&((n&(n-1))==0)&(n&0x55555555)>0; } }
class Solution { //写法三:二项式定理 public boolean isPowerOfFour(int n) { return n>0&&((n&(n-1))==0)&(n%3==1); } }
http://www.jsqmd.com/news/436303/

相关文章:

  • 第十六届蓝桥杯大赛软件赛省赛Java 大学 A 组
  • 河南如意林树叶收集车领衔全国 85%市占率赋能环卫园林革新 - 朴素的承诺
  • pip SSLError解决
  • 河南如意林树叶收集车领跑行业 高新技术赋能全国环卫绿色升级 - 朴素的承诺
  • 河南如意林领航园林机械:树叶收集车赋能城乡清洁新生态 - 朴素的承诺
  • 自动迷宫求解机器人:基于深度强化学习的智能路径规划
  • 基于深度学习的安全锥识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • C# 正则表达式从入门到实战
  • 基于深度学习的3D打印缺陷识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • 人形机器人24小时风向变了:面部智能进化+工厂实习加速落地
  • Java 通过GDAL实现将图片转成GEOTIFF文件
  • 聚焦环保全屋定制:2026国内最新适配家装柜体防潮需求的十大木纹板材实力厂家 - 十大品牌榜
  • 基于深度学习的苹果成熟度识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • 车载以太网设备如何进行线束连接
  • 靠谱的海关数据生产厂家
  • 聚焦环保健康全屋定制:2026国内最新适配家装柜体需求的十大生态板加工厂 - 十大品牌榜
  • 基于深度学习的条形码识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • Matlab直流潮流程序实现详解(基于IEEE 9节点系统)
  • winform 继承Panel的控件设置双缓冲
  • 基于深度学习的轴承缺陷识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • 内燃机专业EI会议IOP-JPCS出版 | 2026年内燃机技术与能源动力工程国际学术会议(ICTEPE 2026)
  • Java基础(下)之网络编程
  • 聚焦环保健康全屋定制:2026国内最新适配家装全场景的十大柜子定制板材生产厂家 - 十大品牌榜
  • Java基础(课后笔记)
  • 改造策略
  • Superpowers:CC 资深工程素养 Skills 库
  • CANoe性能问题的处理方法
  • GIT将某分支(develop分支)合并至某分支(yunwei/develop分支)具体过程
  • 2026年发电机租赁行业权威分析报告:深度解析与优选指南 - 深度智识库
  • C++数据结构与算法_双指针法