swift演算法 2sum 演算法

2021-09-21 07:17:25 字數 649 閱讀 6690

題目描述:

給出乙個整數陣列和乙個目標值,判斷陣列中是否有兩個數之和等於目標值

1、粗暴的方法

每次選中乙個數,然後遍歷整個陣列,判斷是否有另乙個數使兩者之和為target

時間複雜度:o(n^2)

2、利用集合可以優化時間複雜度

思路:在遍歷陣列的過程中,用集合每次儲存當前值。假如集合中已經有乙個數等於目標值減去當前當前值,則證明在之前的遍歷中一定有乙個數與當前值之和等於目標值

時間複雜度:o(n)

具體實現:

func twosum(mums:[int], _ target:int)->bool

set.insert(num)

}return false

}

3、題目變形

描述:給定乙個整型陣列中有且僅有兩個數之和等於目標值,求這兩個數在陣列中的序號

思路:演算法思路與2類似,但是為了方便得到序列號,使用字典

時間複雜度:o(n)

具體實現:

func twosum(nums : [int], target : int)->[int]else

}fatalerror("no valid output!")

}

六 問題 2 sum問題

兩數之和問題 給定乙個列表和乙個整數,從列表中找到兩個數,使得兩數之和等於給定的數,返回兩個數的下標。題目保證有且只有一組解 def two sum 1 nums,target 時間複雜度 o n n param nums param target return n len nums for i i...

swift演算法 2的冪

1 描述 給定乙個整數,編寫乙個函式來判斷它是否是2的冪次方 例1 輸入 1 輸出 true 解釋 2 0 1 例2 輸入 16 輸出 true 解釋 2 4 16 例3 輸入 218 輸出 false 2 演算法 1 二進位制 思想 1 數字n若是2的次方,則一定滿足以下條件 1 二進位制表示下,...

演算法練習(7) 3Sum

題目 題意 題目意思是從給出的陣列中找出三個和為0的元素,返回所有的組合。分析與思路 對於這種題,沒做過這類題的第一反應肯定是暴力求解,三次迴圈,超出所有的組合然後查重去掉重複的。但是這當然會超時畢竟複雜度達到了o n3 因此必須另尋出路。為了避免一些重複的遍歷,對於找和為定值的兩個數時,我們有一種...