力扣简231 2的幂
//我的思路,幂不停除二余数为0,结果为1.
//自己又没考虑到n=0的情况!

1 package leetcode01; 2 /*给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 3 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。*/ 4 public class Solution231 { 5 //我的思路,幂不停除二余数为0,结果为1. 6 public static boolean isPowerOfTwo(int n) { 7 while(n!=1 && n!=0 && n%2==0) {//自己又没考虑到n=0的情况! 8 n=n/2; 9 } 10 if(n==1) { 11 return true; 12 } 13 return false; 14 } 15 16 public static void main(String[] args) { 17 // TODO Auto-generated method stub 18 int n=12; 19 System.out.print(isPowerOfTwo(n)); 20 } 21 22 }
题解一:位运算 用两种方法移除最末尾的1
//位运算两种方法移除最低位的1 public static boolean isPowerOfTwo(int n) { // if(n>0 && (n&n-1)==0) { //注意按位与的优先级小于等于号 需要加括号 // return true; // } // return false; if(n>0 && (n&-n)==n) { return true; } return false; }
题解二:
//题解二:最大的int型的2的幂是2的30次幂,只需要看该数是不是2的30次的约数,题解此数的设置运用了移位的操作 public static boolean isPowerOfTwo(int n) { final int BIG=1<<30; if(n>0 && BIG%n==0) return true; return false; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理