1. 程式人生 > 其它 >樹莓派學習筆記

樹莓派學習筆記

技術標籤:Leetcodeleetcodec++演算法

O(n^2)解法

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> ans;
        for(int i=0;i<=nums.size()-2;i++)
            for(int j=i+1;j<=nums.size()-1;j++)
                if(nums[i]+nums[j]==
target) { ans.push_back(i); ans.push_back(j); } return ans; } };

注意點:

  1. vector動態陣列插入資料用push_back,而不是直接賦值,如ans[0]=i;
  2. vector返回陣列中元素個數,用.size(),而不是sizeof(陣列名),後者在分配陣列記憶體空間時就確定了,表示物件或者資料佔用的記憶體,而前者則是在執行時確定,表示元素個數。

雜湊表解法

class
Solution { public: vector<int> twoSum(vector<int>& nums, int target) { map<int,int> maphash; vector<int> ans; for(int i=0;i<nums.size();i++) maphash[nums[i]]=i; for(int i=0;i<nums.size();i++) if(maphash.find
(target-nums[i])!= maphash.end()) if(maphash.find(target-nums[i])->second!=i) { ans.push_back(i); ans.push_back(maphash.find(target-nums[i])->second); break; } return ans; } };

注意:

  1. 雜湊找(target-目標數)對應的下標(即值)與當前數的下表不相等,才算找到一組

在這裡插入圖片描述