3Sum 超时
3Sum 超时
依姆哣特 发表于2年前
3Sum 超时
  • 发表于 2年前
  • 阅读 34
  • 收藏 0
  • 点赞 2
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 3Sum

暴力求解3sum超时,花了一上午写的,超时,有时间换个思路写吧暂时就不改了

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++ 计数,导致了超时,先添加错误代码,在添加正确代码,我觉得挺好理解的。添加代码改版了 没弄明白,晚上接着贴代码吧~ 

标签: 3Sum 暴力 超时
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 26
码字总数 10646
×
依姆哣特
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: