leetcode算法231.2 的幂

简介: 当给你一个整数 n时,如何判断该整数是否是 2 的幂次方?本文带大家解决这个问题。

一、leetcode算法



1、2 的幂


1.1、题目


给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。


如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。


示例 1:


输入:n = 1

输出:true

解释:20 = 1


示例 2:


输入:n = 16

输出:true

解释:24 = 16


示例 3:


输入:n = 3

输出:false


示例 4:


输入:n = 4

输出:true


示例 5:


输入:n = 5

输出:false


1.2、思路


思路一:此题我们可以运用二进制来进行计算,2的幂次方转换为二进制只有1个1,其余的全部为0,我们可以用n & (n-1)来判断是不是等于0,因为如果是二进制则n为100这种格式,而n-1为11这种格式,两个向&,&是两个都为1的时候为1,其余的都为0,所以这样计算就可以判断是否是2的幂次方了。


1.3、答案


15.png


class Solution {
    public boolean isPowerOfTwo(int n) {
       return n > 0 && (n & (n - 1)) == 0;
    }
}


复杂度分析


时间复杂度:O(1)。


空间复杂度:O(1)。


相关文章
|
1月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
38 0
|
14天前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
1月前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
26 2
|
3月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
70 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
52 6
|
3月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
70 2
|
3月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
50 1
|
3月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
61 1
|
3月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
79 0
|
3月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
43 0
下一篇
无影云桌面