leetcode Power of Two java--代码小白开始苟延残喘第五天的刷题

   苦逼的触及着码农之门:昨天刚开始想着从简单的题目开始刷题,就被这所谓的第一道easy题目刷的搞了一早上搞得蓬头垢面,我决定在坚持一点时间,如果自己码代码的能力依旧入刺之弱的话,就考虑毕业后就转行大哭。。  (安慰自己到 毕竟我没有码过代码,而且是java代码,更是才开始接触,坚持两个月看下子集有没有提高!!!java 老娘不搞定你 就去转行)


一.题目

   Given an integer, write a function to determine if it is a power of two.   (判断一个输是否是2的幂 2^n)

二.思路

     该链接下列出了到2的200次幂,自己可以先感受下那个数字有多大。。

    看到题目第一反应  用2去除,对于小数字多除几次没问题,对于大数字呢,还不要除个n年n月?

    第二反应,用2去取余数,可是这样子除了2的幂,还有一大部分是偶数而非2的幂,再来一层判断?好累的说?

   还有什么思路的?

       首先看题目的要求,返回是boolean类型,所以是判断这个数是 (true) 或者 不是(false) 2的次幂;

  似乎自己比较笨,看到下面这个博客才盗窃了别人的点子: http://blog.csdn.net/hackbuteer1/article/details/6681157

  利用2的幂 其二进制上的特点,来进行判断; 2^n在二进制上都是1000...0(n个零的特点);  减去1,二进制上就会变成1111....111(n个零)

  学习java中按位与(&)  /  按位或(|)   /  逻辑与(&&)   /  逻辑或(||)


三.java 代码   

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

算是给自己心理上的安慰,今天的这个题目逻辑上不是很复杂。呜呜,算是学到了2^n在2进制上的特点。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值