題目描述:
給出乙個整數陣列和乙個目標值,判斷陣列中是否有兩個數之和等於目標值
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 因此必須另尋出路。為了避免一些重複的遍歷,對於找和為定值的兩個數時,我們有一種...