MySQL:cmd建立表報錯,在工具裡面敲正常
阿新 • • 發佈:2022-03-07
兩數之和
給定一個整數陣列nums和一個整數目標值target,請你在該陣列中找出和為目標值target的那兩個整數,並返回它們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是陣列中同一個元素在答案裡不能重複出現。
你可以按任意順序返回答案。
示例1:
輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2:
輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例3:
輸入:nums = [3,3], target = 6
輸出:[0,1]
解題思路
暴力法
//兩層迴圈 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int length=nums.size(); vector<int> rtn; for(int i=0;i<length;i++) { for(int j=i+1;j<length;j++) { if((nums[i]+nums[j])==target) { rtn.emplace_back(i); rtn.emplace_back(j); break; } } if(!rtn.empty())break; } return rtn; } };
雜湊表
- map與unordered_map
- find與count
- push_back與emplace_back的區別
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int length=nums.size(); vector<int> rtn; unordered_map<int,int> hashmap; for(int i=0;i<length;i++) { if(hashmap.count(target-nums[i]))//在hash表裡找target-nums[i]是否存在 { //存在,插入返回vector rtn.emplace_back(i); rtn.emplace_back(hashmap[target-nums[i]]); break; } hashmap.insert(pair<int,int>{nums[i],i});//不存在就插入雜湊表,為了後續對比(其實可以倒過來看) } return rtn; } };