LeetCode 231. Power of Two

https://leetcode.com/problems/power-of-two/description/

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

  • 简单数学题,位运算
  • 2的幂在2进制中只有1个0,所以可以利用n & (n -1) == 0来判断是不是2的幂
 1 //
 2 //  main.cpp
 3 //  LeetCode
 4 //
 5 //  Created by Hao on 2017/3/16.
 6 //  Copyright © 2017年 Hao. All rights reserved.
 7 //
 8 
 9 #include <iostream>
10 using namespace std;
11 
12 class Solution
13 {
14 public:
15     bool isPowerOfTwo(int n)
16     {
17         return ((n > 0) && ((n & (n - 1)) == 0));
18     }
19 };
20 
21 int main(int argc, char* argv[])
22 {
23     Solution    testSolution;
24     
25     auto nums = {0, 1, 2, 3, 4, 8, 16, 1000, 1024};
26     
27     for (auto num : nums)
28     {
29         cout << num << " isPowerOfTwo ? " << testSolution.isPowerOfTwo(num) << endl;
30     }
31     
32     return 0;
33 }
View Code
0 isPowerOfTwo ? 0
1 isPowerOfTwo ? 1
2 isPowerOfTwo ? 1
3 isPowerOfTwo ? 0
4 isPowerOfTwo ? 1
8 isPowerOfTwo ? 1
16 isPowerOfTwo ? 1
1000 isPowerOfTwo ? 0
1024 isPowerOfTwo ? 1
Program ended with exit code: 0
View Result

 

posted on 2018-01-25 13:31  浩然119  阅读(144)  评论(0编辑  收藏  举报