-4
我正在做3sum問題在leetcode.com3etum LTE leetcode
蠻力的時間複雜度是O(N^3)。
我使用哈希表,所以我認爲時間複雜度是O(N^2)。
然而,我仍然有一個TLE(超出時間限制)
我怎樣才能加快我的代碼?
以下是我的代碼
非常感謝!
class Solution public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> ANS;
if(nums.size() < 3) return ANS;
map<int,int*> hashtable;
map<int,int*>::iterator it;
vector<int> ans;
for(int i=0;i < nums.size();i++)
{
for(int j=i+1;j < nums.size();j++)
{
it = hashtable.find(nums[j]);
if(it != hashtable.end()) //found target
{
ans.push_back(nums[j]);
ans.push_back((it)->second[0]);
ans.push_back((it)->second[1]);
sort(ans.begin(),ans.end());
ANS.push_back(ans);
ans.clear();
}
else
{
int* temp = new int[2];
temp[0]=nums[i];
temp[1]=nums[j];
hashtable[0-nums[i]-nums[j]]=temp;
}
}
hashtable.clear();
}
sort(ANS.begin(), ANS.end());
ANS.erase(unique(ANS.begin(), ANS.end()), ANS.end());
return ANS;
}};
詢問改善工作代碼的問題應該在[代碼評論](https://codereview.stackexchange.com/)上提問 – NathanOliver
對不起,我將刪除該文章 – Frank