c基礎語法03
阿新 • • 發佈:2022-03-20
做題思路 or 感想 :
1,這種 N 數之和一般是可以用雜湊表來解決
2,一般找差就直接用 雜湊表自帶的 find 去查差值是否存在就好了
3,驚了vector並不自帶 find ,平常用的都是algorithm裡的,而像 map , set 都是自帶 find 的,所以在力扣刷題裡要用 find 要搞個 map 或 set
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 unordered_map<int, int>HashMap; //key是值,val是下標 5 for (int i = 0; i < nums.size(); i++) { 6 auto it = HashMap.find(target - nums[i]); //經典用find處理n數和的問題 7 if (it != HashMap.end()) { 8 return {i, (*it).second}; 9 } 10 HashMap.insert(make_pair(nums[i], i)); //這裡很有講究,如果提前先把雜湊表打好再進行上面的查詢操作,可能會一個元素用兩次,在這裡再進行列印雜湊表可以防止這種問題 11 } 12 return {}; //若無,則還一個空vector 13 } 14 };