1. 程式人生 > 其它 >c基礎語法03

c基礎語法03

做題思路 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 };