簡單swift
給定一個整數數組
nums
和一個目標值target
,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。 你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。數組
給定 nums = [2, 7, 11, 15], target = 9
由於 nums[0] + nums[1] = 2 + 7 = 9
因此返回 [0, 1]
複製代碼
來源:力扣(LeetCode) 連接:leetcode-cn.com/problems/tw… 著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。bash
swift網絡
這題的本意就是 number1 + number2 = target
,number1
能夠通過遍歷數組獲得,可是在取number2
的時候咱們不能也去遍歷數組,這樣的時間複雜度會是O(n^2)
,並且代碼看起來太醜了。因此經過number2 = target - number1
,咱們能夠在遍歷數組的時候將每一個數字存起來,而後拿到每一個number
,將target - number
獲得的差值去判斷是否存在。存儲的辦法咱們用字典,由於hashmap
比較快。同時爲了不重複利用數組的某個元素,在有對應值的時候,咱們不作處理。ui
代碼以下:spa
class Solution {
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
var hashMap = [Int: Int]()
for index in 0...nums.count - 1 {
let minusValue = target - nums[index]
if hashMap[minusValue] != nil && index != hashMap[minusValue] {
return [hashMap[minusValue]!, index]
}
else {
hashMap[nums[index]] = index
}
}
return []
}
}
複製代碼
我認爲在合適場景利用hashmap
會有不錯的效果。code