樹莓派學習筆記
阿新 • • 發佈:2021-02-07
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;
}
};
注意點:
- vector動態陣列插入資料用push_back,而不是直接賦值,如ans[0]=i;
- 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;
}
};
注意:
- 雜湊找(target-目標數)對應的下標(即值)與當前數的下表不相等,才算找到一組