★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-uvlcbfia-md.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.git
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.github
Note:數組
Example:微信
Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。less
函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。函數
說明:spa
示例:code
輸入: numbers = [2, 7, 11, 15], target = 9 輸出: [1,2] 解釋: 2 與 7 之和等於目標數 9 。所以 index1 = 1, index2 = 2 。
1 class Solution { 2 func twoSum(_ numbers: [Int], _ target: Int) -> [Int] { 3 var leftIndex:Int = 0 4 var rightIndex:Int = numbers.count - 1 5 while (leftIndex < rightIndex) 6 { 7 var sum = numbers[leftIndex] + numbers[rightIndex] 8 if sum == target 9 { 10 return [leftIndex + 1,rightIndex + 1] 11 } 12 else if sum < target 13 { 14 leftIndex += 1 15 } 16 else 17 { 18 rightIndex -= 1 19 } 20 } 21 return [] 22 } 23 }
16mshtm
1 class Solution { 2 func twoSum(_ numbers: [Int], _ target: Int) -> [Int] { 3 guard numbers.count >= 2 else { 4 return [] 5 } 6 var dic: [Int:Int] = [:] 7 for i in 0..<numbers.count { 8 let t = target - numbers[i] 9 if dic.keys.contains(t) { 10 return [dic[t]!+1, i+1] 11 } 12 dic[numbers[i]] = i 13 } 14 return [] 15 } 16 }
24ms
1 class Solution { 2 func twoSum(_ numbers: [Int], _ target: Int) -> [Int] { 3 var numIndexDict = [Int : Int]() 4 for (index, num) in numbers.enumerated() { 5 numIndexDict[num] = index 6 } 7 8 for (index, num) in numbers.enumerated() { 9 if let diffIndex = numIndexDict[target - num] { 10 return [index + 1, diffIndex + 1] 11 } 12 } 13 14 return [Int]() 15 } 16 }