swift演算法 2的冪

2021-09-25 13:33:21 字數 738 閱讀 2641

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 進一步 ...