• [Swift]LeetCode167. 两数之和 II


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9715077.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.

    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.

    Note:

    • Your returned answers (both index1 and index2) are not zero-based.
    • You may assume that each input would have exactly one solution and you may not use the same element twice.

    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.

    给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

    函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2

    说明:

    • 返回的下标值(index1 和 index2)不是从零开始的。
    • 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。

    示例:

    输入: 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 }

    16ms

     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 }
  • 相关阅读:
    vs2013常用快捷键收集
    关于cocos2d-x 与 cocos2d-html5 资源预加载的思考
    【转】使用cocos2d-console工具转换脚本为字节码
    多层CCLayer的touch冲突解决
    jsb里出现的 Invalid Native Object的一次bug修复的思考
    win7 通过命令行压缩文件
    消格子时一个很深的bug的修复纪录
    mac自带apache服务器开启
    shell命令:给当前目录里一个文件压缩一份不包含.svn文件的zip包
    shell命令:删除当前.sh文件所在目录下的zip包,并且重新打包
  • 原文地址:https://www.cnblogs.com/strengthen/p/9715077.html
Copyright © 2020-2023  润新知