2 条题解

  • 0
    @ 2025-10-8 17:00:09

    题目名称:两数之和

    题目描述

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
    你可以假设每种输入只会对应一个答案,且数组中同一个元素在答案里不能重复出现。
    你可以按任意顺序返回答案。

    解题思路

    使用哈希表存储已遍历的数字及其索引,对于每个当前数字 nums[i],计算 target - nums[i] 得到补数。若补数存在于哈希表中,则返回补数的索引和当前索引;否则将当前数字和索引存入哈希表。

    代码实现

    #include <vector>
    #include <unordered_map>
    using namespace std;
    
    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
            unordered_map<int, int> numMap;
            for (int i = 0; i < nums.size(); ++i) {
                int complement = target - nums[i];
                if (numMap.find(complement) != numMap.end()) {
                    return {numMap[complement], i};
                }
                numMap[nums[i]] = i;
            }
            return {}; // 题目保证有解,此处仅为语法完整
        }
    };
    
    • 0
      @ 2025-10-8 16:59:57
      • 1

      信息

      ID
      2129
      时间
      1000ms
      内存
      1024MiB
      难度
      9
      标签
      递交数
      14
      已通过
      2
      上传者