LeetCode - #1 Two Sum

作者: Swift社区 | 来源:发表于2021-11-25 10:41 被阅读0次

    前言

    我们社区从本期开始会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。微博:@故胤道长)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。

    不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。

    1. 描述

    已知一个整数数组 nums 和一个整数 target,取数组中任意两个值相加的和等 整数 target,返回这两个值在数组中的索引。

    假设:

    1. 只有一个有效答案
    2. 同一个值不能重复取两次
    3. 可以按任意顺序返回答案

    2. 示例

    示例 1

    输入:nums = [2,7,11,15],target = 9
    输出:[0,1]
    解释:因为 nums[0] + nums[1] == 9,所以返回 [0, 1]
    

    示例 2

    输入:nums = [3,2,4],target = 6
    输出:[1,2]
    

    示例 3

    输入:nums = [3,3],target = 6
    输出: [0,1]
    

    3. 答案

    class TwoSum {
        func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
            var dict = [Int: Int]()
      
            for (i, num) in nums.enumerated() {
                if let lastIndex = dict[target - num] {
                    return [lastIndex, i]
                }
        
                dict[num] = i
            }
      
            fatalError("No valid outputs")
        }
    }
    
    • 主要思想:遍历数组并在字典中存储目标 - nums[i]
    • 时间复杂度:O(n)
    • 空间复杂度:O(n)

    相关文章

      网友评论

        本文标题:LeetCode - #1 Two Sum

        本文链接:https://www.haomeiwen.com/subject/nybuzltx.html