背景
題目英文
Given an integer, write a function to determine if it is a power of two.
Example 1:
Input: 1
Output: true
Explanation: 2^0 = 1
Example 2:
Input: 16
Output: true
Explanation: 2^4 = 16
Example 3:
Input: 218
Output: false
題目中文
給定一個整數,編寫一個函數來判斷它是否是 2 的冪次方。
示例 1:
輸入: 1
輸出: true
解釋: 2^0 = 1
示例 2:
輸入: 16
輸出: true
解釋: 2^4 = 16
示例 3:
輸入: 218
輸出: false
算法實現
public class Solution
{
public bool IsPowerOfTwo(int n)
{
if(n < 1)
return false;
if (n == 1)
return true;
int a = n >> 1;
while (a != 1)
{
if (a*2 != n)
return false;
n = a;
a = n >> 1;
}
return a*2 == n;
}
}
實驗結果
- 狀態:通過
- 1108 / 1108 個通過測試用例
- 執行用時: 52 ms, 在所有 C# 提交中擊敗了 90.11% 的用戶
- 內存消耗: 13.7 MB, 在所有 C# 提交中擊敗了 5.77% 的用戶
相關圖文
1. “數組”類算法
- LeetCode實戰:三數之和
- LeetCode實戰:最接近的三數之和
- LeetCode實戰:求衆數
- LeetCode實戰:缺失的第一個正數
- LeetCode實戰:快樂數
- LeetCode實戰:尋找兩個有序數組的中位數
- LeetCode實戰:盛最多水的容器
- LeetCode實戰:刪除排序數組中的重複項
- LeetCode實戰:搜索旋轉排序數組
- LeetCode實戰:螺旋矩陣
- LeetCode實戰:螺旋矩陣 II
2. “鏈表”類算法
- LeetCode實戰:兩數相加
- LeetCode實戰:刪除鏈表的倒數第N個節點
- LeetCode實戰:合併兩個有序鏈表
- LeetCode實戰:合併K個排序鏈表
- LeetCode實戰:兩兩交換鏈表中的節點
- LeetCode實戰:旋轉鏈表
- LeetCode實戰:環形鏈表
3. “棧”類算法
4. “隊列”類算法
5. “遞歸”類算法
6. “字符串”類算法
7. “樹”類算法
8. “哈希”類算法
9. “搜索”類算法
10. “動態規劃”類算法
11. “回溯”類算法
12. “數值分析”類算法