两数之和(Leetcode第1题)
目錄
1.題目描述
2.分析
3.代碼展示
有著Leetcode夢開始的地方也是結束稱呼的第一題,我來了,這次是我第二次做這個題,第一次用的是JAVA,這次用的是C++的哈希表的做法,兩次的方法是不一樣的。
1.題目描述
2.分析
此題有兩種做法,一種是暴力解法,這里就不詳細的講了,也就是用兩個個for循環,一個個的找
代碼展示:
class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {if (nums[i] + nums[j] == target) {return {i, j};}}}return {};} };第二種(重點):哈希表
我們創建一個哈希表,對于每一個?x,我們首先查詢哈希表中是否存在?target - x,然后將?x?插入到哈希表中,即可保證不會讓?x?和自己匹配。
3.代碼展示
class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int , int> map;for (int i = 0; i < nums.size(); i++) {auto iter = map.find(target - nums[i]);//指向第一個關鍵字為key的元素if (iter != map.end()) {//判斷元素是否在容器中return {iter->second , i};//返回其地址,第一個是返回Iter值對應的地址}map[nums[i]] = i;}return {};} };?
此題涉及到兩個c++比較重要的知識點,一個是unordered_map,另一個是auto
unordered_map具體知識可以參考一下博主:https://blog.csdn.net/weixin_43222324/article/details/112237342?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161710328416780266274066%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161710328416780266274066&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-12-112237342.first_rank_v2_pc_rank_v29&utm_term=unordered_map+
auto具體知識可以參考一下博主:https://blog.csdn.net/zyc2018/article/details/93591189?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161709694316780266254714%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161709694316780266254714&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-93591189.first_rank_v2_pc_rank_v29&utm_term=auto
作為一個小白,c++很多知識都不知道,所以就查了很多資料,把查的就展示出來一起學習。學習是一個很重要的事,是一個持續的事,不會的就查就好了,慢慢的積累。
總結
以上是生活随笔為你收集整理的两数之和(Leetcode第1题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 学习之元组
- 下一篇: __name__ == '__main_