3Sum 超時

暴力求解3sum超時,花了一上午寫的,超時,有時間換個思路寫吧暫時就不改了less

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        int len = int(nums.size());
        
        sort(nums.begin(), nums.end(),less<int>());
        
        int newlenth = len*(len-1)*(len-2)/6;
        vector<vector<int>> res(newlenth,vector<int>(3,0));
        //vector<vector <int> > ivec(m ,vector<int>(n,0));
        int p=0;
        for (int i=0; i<len; i++) {
            if(i > 0 && nums[i] == nums[i-1]){
                continue;
            }
            for (int j=i+1; j<len; j++) {
                if(j > 0 && nums[j] == nums[j-1]){
                    continue;
                }
                for (int k=j+1; k<len; k++) {
                    if(k > 0 && nums[k] == nums[k-1]){
                        continue;
                    }
                    if (nums[i]+nums[j]+nums[k]==0) {
                        cout<<i<<endl<<j<<endl<<k<<endl;
                        res[p][0]=nums[i];
                        res[p][1]=nums[j];
                        res[p][2]=nums[k];
                        cout<<res[p][0]<<" "<<res[p][1]<< " "<<res[p][2]<<endl;
                        p++;
                    }
                }
            }
        }
        return res;
    }
};

以後我又寫了個二分查找,也超時了,居然是應爲打印 ,我用了一個count++ 計數,致使了超時,先添加錯誤代碼,在添加正確代碼,我以爲挺好理解的。添加代碼改版了 沒弄明白,晚上接着貼代碼吧~ code

相關文章
相關標籤/搜索