• [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 }
  • 相关阅读:
    mac/unix系统:C++实现一个端口扫描器
    C++:通过gethostbyname函数,根据服务器的域名,获取服务器IP
    PostMan Setting Proxy 设置 代理
    企业架构 Red Hat Drools KIE Project 三大核心产品
    IDS,IPS,IPD
    Vehicle routing with Optaplanner graph-theory
    SonarQube Detection of Injection Flaws in Java, C#, PHP
    Spring AOP Log
    Code Quality and Security | SonarQube
    Gradle vs. Maven: Performance, Compatibility, Speed, & Builds
  • 原文地址:https://www.cnblogs.com/strengthen/p/9715077.html
Copyright © 2020-2023  润新知