MENU

LeetCode231. 2 的幂

July 8, 2018 • Read: 2922 • LeetCode阅读设置

2 的幂从小到大有 1,2,4,8...

观察他们的二进制:1 = 1,2 = 10,4 = 100,8 = 1000...... 我们发现 2 的幂基本上都满足这样一个规律就是,这个数的二进制数都是 1 开头,后面 m 个 0

我们再看一下每个 2 的幂次方数减 1:0 = 0,1 = 1,3 = 011,7 = 0111...... 我们发现正好每一位都是与 2 的幂的二进制相反,于是我们可以将 n 和 n-1 相 &,得到的结果如果是 0,就表示 n 是 2 的幂,如果不是 0,他就不是 2 的幂

  • class Solution {
  • public boolean isPowerOfTwo(int n) {
  • if(n <= 0)
  • return false;
  • return ((n & (n - 1)) == 0);
  • }
  • }
Last Modified: October 10, 2018
Archives Tip
QR Code for this page
Tipping QR Code