Leetcode 231. 2的幂 数学
地址 https://leetcode-cn.com/problems/power-of-two/
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false
解法一 第一反应是打表 ac .但是时间上不是最优

1 class Solution { 2 public: 3 set<int> s ={ 4 1, 5 2, 6 4, 7 8, 8 16, 9 32, 10 64, 11 128, 12 256, 13 512, 14 1024, 15 2048, 16 4096, 17 8192, 18 16384, 19 32768, 20 65536, 21 131072, 22 262144, 23 524288, 24 1048576, 25 2097152, 26 4194304, 27 8388608, 28 16777216, 29 33554432, 30 67108864, 31 134217728, 32 268435456, 33 536870912, 34 1073741824 35 }; 36 bool isPowerOfTwo(int n) { 37 if(s.count(n) != 0) return true; 38 39 return false; 40 } 41 };
解法二 一个小技巧(简单题目很多都是需要这种小技巧)
如果n能够确认是 由一个1 和全部零组成的二进制数字 那么它肯定是2的幂
恰好
n&-n 返回的是n的二进制 数位上第一个1和0 组成的数字
那么代码如下

1 class Solution { 2 public: 3 bool isPowerOfTwo(int n) { 4 if(n>0 && (n&-n) == n) return true; 5 return false; 6 } 7 };
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
2019-05-01 前缀和的一个应用