天天看點

leetcode算法231.2 的幂

哈喽!大家好,我是【學無止境小奇】,一位熱愛分享各種技術的部落客!

⭐【學無止境小奇】的創作宗旨:每一條指令都親自執行過,每一行代碼都實際運作過,每一種方法都真實實踐過,每一篇文章都良心制作過。✊✊✊

⭐【學無止境小奇】的部落格中所有涉及指令、代碼的地方,除了提供圖檔供大家參考,另外會在圖檔下方提供一份純文字格式的指令或者代碼友善大家粘貼複制直接執行指令或者運作代碼。

⭐如果你對技術有着濃厚的興趣,歡迎關注【學無止境小奇】,歡迎大家和我一起交流。

❤️❤️❤️感謝各位朋友接下來的閱讀❤️❤️❤️

文章目錄

  • ​​一、leetcode算法​​
  • ​​ 1、2 的幂​​
  • ​​1.1、題目​​
  • ​​1.2、思路​​
  • ​​1.3、答案​​

一、leetcode算法

1、2 的幂

1.1、題目

給你一個整數 n,請你判斷該整數是否是 2 的幂次方。如果是,傳回 true ;否則,傳回 false 。

如果存在一個整數 x 使得 n == 2x ,則認為 n 是 2 的幂次方。

示例 1:

輸入:n = 1

輸出:true

解釋:20 = 1

示例 2:

輸入:n = 16

輸出:true

解釋:24 = 16

示例 3:

輸入:n = 3

輸出:false

示例 4:

輸入:n = 4

輸出:true

示例 5:

輸入:n = 5

輸出:false

1.2、思路

思路一:此題我們可以運用二進制來進行計算,2的幂次方轉換為二進制隻有1個1,其餘的全部為0,我們可以用n & (n-1)來判斷是不是等于0,因為如果是二進制則n為100這種格式,而n-1為11這種格式,兩個向&,&是兩個都為1的時候為1,其餘的都為0,是以這樣計算就可以判斷是否是2的幂次方了。

1.3、答案

leetcode算法231.2 的幂
class Solution {
    public boolean isPowerOfTwo(int n) {
       return n > 0 && (n & (n - 1)) == 0;
    }
}      

複雜度分析

時間複雜度:O(1)。