程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> leetcode筆記:Power of two

leetcode筆記:Power of two

編輯:關於C++

一. 題目描述

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

二.題目分析

該題要求簡單,給定一個整數,判斷其是不是2的整數次冪,這道題的解題關鍵是找到一個規律:如果一個數字是2的整數次冪,若將該數寫為二進制數,這個二進制數中有且僅有一位為1,其余均為0。根據這一性質,不難給出以下給出兩種解決方法。

三.示例代碼

// 將n不停右移,比較二進制數中1出現的個數,count = 1時判定為ture
bool isPowerOfTwo(int n) {  
    int count = 0;  
    while (n > 0)  
    {  
        count+=(n&0x01);   
        n>>=1;  
    }  
    if(sum==1)
        return true;
    else
        return false;
}

以下方法同樣利用了一個2的整數次冪的二進制寫法中有且僅有一位為1的性質。假設該數為n,根據這一性質,則(n - 1)必然是將n的最高位10,然後其余二進制位均置1,當且僅當這種情況下,有(n&(n-1)) == 0,一個例子:

n = 8 -> 1000
n - 1 = 7 -> 0111
則有:1000 & 0111 = 0000

class Solution {  
public:  
    bool isPowerOfTwo(int n) {  
        return (n>0) && (!(n&(n-1)));  
    }  
};  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved