【剑斩OFFER】算法的暴力美学——两数之和
2026/7/9 9:12:55 网站建设 项目流程

一、题目描述

二、算法原理

思路:差值 + 哈希表

假设我们遍历到 7 这个数字,此时 7 前面的数字都放到哈希表里面,当然不能把 7 也题目放到这个哈希表里面,原因待会说,如果 target - 7 = 2 存在于这个哈希表中,那么符合题目要求,因为 2 + 7 = 9 ,那为什么不能提前把 7 放到哈希表中呢?答:假设哈希表里面只有一个数字 1,taget = 4,此时刚好遍历到数字 2 ,如果我们提前把 2 放到哈希表里面,那么 target - 2 = 2 ,这个 2 刚好在哈希表里面,此时我们返回的值是错误的,不符合题目要求的。

三、代码实现

class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> hash; for(int i = 0;i < nums.size();i++) { int cur = target - nums[i];//差值 if(hash.find(cur) != hash.end()) return {hash[cur],i};//查找差值是否存在 hash[nums[i]] = i; } return {}; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询