2 条题解

  • 0
    @ 2025-10-8 17:11:44

    题目:两数之和

    思路分析:题目要求在整数数组中找到两个数,使其和等于目标值并返回它们的索引。暴力解法通过双重循环枚举所有可能的数对,时间复杂度为O(n²),效率较低。优化方案采用哈希表存储已遍历元素及其索引,每次遍历计算目标值与当前元素的差值,若差值存在于哈希表中则直接返回结果,否则将当前元素存入哈希表。此方法时间复杂度O(n),空间复杂度O(n)。

    代码实现

    #include <iostream>
    #include <vector>
    #include <unordered_map>
    
    using namespace std;
    
    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;
        }
    • 0
      @ 2025-10-8 17:11:27

      小白菜无 spj,有些做法无法通过全部数据,建议去洛谷交

      • 1

      信息

      ID
      6498
      时间
      3000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      3
      已通过
      2
      上传者