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进制上的特点。。

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lq365801749/article/details/46872521
个人分类: leetcode java
上一篇LeetCode java Longest Substring Without Repeating Characters
下一篇leetcode Implement Queue using Stacks
想对作者说点什么? 我来说一句

算法刷题LeetCode

2018年01月08日 837KB 下载

没有更多推荐了,返回首页

关闭
关闭