LeetCode 231. Power of Two 题解
LeetCode 231. Power of Two 题解题目描述给你一个整数 n请你判断该整数是否是 2 的幂次方。如果是返回true否则返回false。示例 1输入n 1 输出true 解释2^0 1示例 2输入n 16 输出true 解释2^4 16示例 3输入n 3 输出false解题思路位运算2 的幂次方的二进制表示中只有一个 1n (n-1) 0表示二进制中只有一个 1注意n 必须大于 0代码实现def isPowerOfTwo(n): return n 0 and (n (n - 1)) 0其他解法方法二使用对数import math def isPowerOfTwo(n): if n 0: return False return math.log2(n).is_integer()方法三循环除以 2def isPowerOfTwo(n): if n 0: return False while n % 2 0: n // 2 return n 1复杂度分析方法时间复杂度空间复杂度位运算O(1)O(1)对数O(1)O(1)循环O(log n)O(1)测试案例# 测试案例 1 assert isPowerOfTwo(1) True # 测试案例 2 assert isPowerOfTwo(16) True # 测试案例 3 assert isPowerOfTwo(3) False # 测试案例 4 assert isPowerOfTwo(0) False # 测试案例 5 assert isPowerOfTwo(-2) False总结本题是位运算的经典应用。关键点2 的幂次方的二进制特征n (n-1)的应用边界条件处理通过本题可以深入理解位运算的应用。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2463675.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!