日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哈希表--两数之和

發布時間:2025/6/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈希表--两数之和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? 題目描述:
? ? ? 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。
? ? ?你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。
? ? ?示例:
? ? ?給定 nums = [2, 7, 11, 15], target = 9
? ? ?因為 nums[0] + nums[1] = 2 + 7 = 9
? ? ?所以返回 [0, 1]

?

? ? ?暴力解法就是用2層for循環,下面看下哈希表的解法:

#include <iostream> #include <vector> #include<unordered_map>using namespace std;class Solution { public:vector<int> twoSum1(vector<int>& nums, int target) {//方法1:兩遍哈希vector<int> res;if(nums.size() < 2)return res;//數組中至少有兩個數時,創建哈希表的key-valueunordered_map<int,int> mymap;for(auto i = 0;i < nums.size();i++){//將值作為hash表的下標mymap[nums[i]] = i;//值-下標}//查找for(auto i = 0;i < nums.size();i++){int temp = target - nums[i];unordered_map<int,int>::iterator iter = mymap.find(temp);//保證不是同一個數重復利用if(iter != mymap.end() && iter->second != i){res.push_back(i);res.push_back(iter->second);break;}}return res;}vector<int> twoSum2(vector<int>& nums, int target) {//方法2:一遍哈希vector<int> res;if(nums.size() < 2)return res;//數組中至少有兩個數,創建哈希表unordered_map<int,int> mymap;unordered_map<int,int>::iterator iter;for(auto i = 0;i < nums.size();i++){int temp = target - nums[i];//要找的那個值iter = mymap.find(temp);if(iter != mymap.end()){res.push_back(iter->second);res.push_back(i);break;}//沒找到mymap[nums[i]] = i;//值-下標}return res;} };

? ?哈希表鍵存儲數組的值,哈希表值存儲數組的下標。

?

代碼地址:https://leetcode-cn.com/problems/two-sum/solution/ha-xi-biao-by-jian-yi-9-2

總結

以上是生活随笔為你收集整理的哈希表--两数之和的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。