1、描述
給定乙個整數,編寫乙個函式來判斷它是否是2的冪次方
例1:輸入:1
輸出:true
解釋:2^0 = 1
例2:輸入:16
輸出:true
解釋:2^4 = 16
例3:輸入:218
輸出:false
2、演算法
1)二進位制
思想: 1、數字n若是2的次方,則一定滿足以下條件:
1)二進位制表示下,n最高位為1,其餘所有位為0;
2)二進位制表示下,n - 1最高位為0,其餘所有位為1(除了n == 1的情況下,n - 1 == 0,即末位為最高位);
3)n <= 0時一定不是2的次方。
2、因此,判斷n > 0且n & (n - 1) == 0則可確定n是否是2的次方。
func ispoweroftwo(_ n : int)->bool
2)遞迴
思想: 逐步增加除數的大小,每次增加為之前除數的2倍,如果除以除數為0,則除數重新置位2,以遞迴的方式重新計算
func ispoweroftwo(_ n : int)->boolelse
}private func cal(_ n : int)->bool
if n%2 == 0 else if n == 1 else
}
swift演算法 2sum 演算法
題目描述 給出乙個整數陣列和乙個目標值,判斷陣列中是否有兩個數之和等於目標值 1 粗暴的方法 每次選中乙個數,然後遍歷整個陣列,判斷是否有另乙個數使兩者之和為target 時間複雜度 o n 2 2 利用集合可以優化時間複雜度 思路 在遍歷陣列的過程中,用集合每次儲存當前值。假如集合中已經有乙個數等...
演算法訓練 2的次冪表示
演算法訓練 2的次冪表示 時間限制 1.0s 記憶體限制 512.0mb 問題描述 任何乙個正整數都可以用2進製表示,例如 137的2進製表示為10001001。將這種2進製表示寫成2的次冪的和的形式,令次冪高的排在前面,可得到如下表示式 137 2 7 2 3 2 0 現在約定冪次用括號來表示,即...
演算法訓練 2的次冪表示
問題描述 任何乙個正整數都可以用2進製表示,例如 137的2進製表示為10001001。將這種2進製表示寫成2的次冪的和的形式,令次冪高的排在前面,可得到如下表示式 137 2 7 2 3 2 0 現在約定冪次用括號來表示,即a b表示為a b 此時,137可表示為 2 7 2 3 2 0 進一步 ...