iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

題目說明:給你一個數字,要你判斷這個數字是否為2的冪次方

Case 1
Input: n = 1
Output: true
Explanation: 2^0 = 1

Case 2
Input: n = 16
Output: true
Explanation: 2^4 = 16

Case 3
Input: n = 3
Output: false

解題思路:要如何判斷是否為2的冪次方。我們可以知道若一個數字(假設為n)為2的冪次方,這個數字可以被改寫成
n=12222*...*2(中間有x個2),所以回推的話就可以知道在可以被2整除的條件下將n持續除以2最後得到結果必定為1,有了這個思維其實程式方面就很好寫了。

附上程式碼以及註解

Java

class Solution {
    public boolean isPowerOfTwo(int n) {
       if(n<=0){
           return false;//n<0絕對不是2的冪次方
       }
        while(n%2==0){
            n=n/2;//可以被2整除的條件下將n持續除以2
        }
        if(n==1){
            return true;//n=1回傳true
        }
        return false;
}
}

Python

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        if n<=0:
            return False#n<0絕對不是2的冪次方
        while n%2==0:
            n//=2#可以被2整除的條件下將n持續除以2
        return n==1#判斷n是否=1

上一篇
Day 15 Set Matrix Zeroes
下一篇
Day 17 Factorial Trailing Zeroes
系列文
從leetcode學習資料結構和演算法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言