2 条题解

  • 0
    @ 2025-10-8 16:52:45

    题目名称:两数之和(LeetCode 1)

    题目描述

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

    你可以按任意顺序返回答案。

    示例

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

    解法思路

    使用哈希表优化暴力枚举,时间复杂度可降至 O(n)
    遍历数组时,对于每个元素 nums[i],计算 target - nums[i](称为“补数”),检查补数是否已存在于哈希表中:

    • 若存在,直接返回补数的索引和当前索引 i
    • 若不存在,将当前元素 nums[i] 和索引 i 存入哈希表,继续遍历。

    代码实现

    def twoSum(nums, target):
        hash_map = {}  # 存储 {数值: 索引}
        for i, num in enumerate(nums):
            complement = target - num
            if complement in hash_map:
                return [hash_map[complement], i]
            hash_map[num] = i
        return []  # 题目保证有解,此句可省略
    

    复杂度分析

    • 时间复杂度:O(n),其中 n 是数组长度,每个元素仅遍历一次。
    • 空间复杂度:O(n),哈希表最多存储 n 个元素。
    • 0
      @ 2025-10-8 16:52:33

      • 1

      【基于连通性状态压缩的动态规划问题】Tony's Tour[POJ1739]

      信息

      ID
      606
      时间
      1000ms
      内存
      30MiB
      难度
      10
      标签
      递交数
      7
      已通过
      2
      上传者