Leetcode NO.231 Power of Two

原创 2015年07月10日 07:12:59

本题题目要求如下:

Given an integer, write a function to determine if it is a power of two.

很简单的要求,不过一开始我居然没有想到解决问题的办法,用一种很傻的方法做的,后来感觉不对,看了提示,用位运算解决,才恍然大悟,用简单方法解决了问题。。

power of 2的数看十进制,没有什么特别的地方,但是转换成二进制之后,都是100000的形式,最高位是1,其余位都是0,然后,这个数减1,就变为011111,最高位(已消失)为0,之后都是1,所以这两个数按位与(&)则变为0000000000.。。根据这个特性,可以解决这道题,代码如下:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n <= 0) {
            return false;
        }
        return !(n & (n-1));
    }
};

更新一种更为传统的做法:

public:
    bool isPowerOfTwo(int n) {
        if (n <= 0) {
            return false;
        }
        while ((n >> 1) << 1 == n) {
            n >>= 1;
        }
        return (n == 1) ? true: false;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LeetCode 231. Power of Two 解题报告

LeetCode 231. Power of Two 解题报告

[231] Power of Two

求一个整数是不是2的n次方

Leetcode 231. Power of Two & 326. Power of Three & 342. Power of Four

231. Power of Two   Total Accepted: 69528 Total Submissions: 190898 Difficulty: Easy Given an ...

leetcode第231题:Power of Two

ProblemGiven an integer, write a function to determine if it is a power of two.题目给出一个整数,写一个函数判断它是否是2...

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

苦逼的触及着码农之门:昨天刚开始想着从简单的题目开始刷题,就被这所谓的第一道easy题目刷的搞了一早上搞得蓬头垢面,我决定在坚持一点时间,如果自己码代码的能力依旧入刺之弱的话,就考虑毕业后就转行。。 ...

关于LeetCode中Power of Two一题的理解

题目如下: Given an integer, write a function to determine if it is a power of two.      多么朴实无华的题干,输入一个...

Leetcode NO.160 Intersection of Two Linked Lists

本题题目要求如下: Write a program to find the node at which the intersection of two singly linked lists be...

LeetCode No.4 Median of Two Sorted Arrays

LeetCode No.4 Median of Two Sorted Arrays

Leetcode NO.4 Median of Two Sorted Arrays

本题题目要求如下: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the medi...

[leetcode NO.2] Median of Two Sorted Arrays (JAVA)

据说这题在leetcode中是个5星题, 刚开始我用merge的方法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)