【LeetCode】3Sum

class Solution {
public:
    vector<vector<int> > threeSum(vector<int> &num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
       
		vector<vector<int> > ret;
		 ret.clear();
        sort(num.begin(),num.end());
        for(int i=0; i!=num.size();i++){
    		if(i > 0 && num[i]==num[i-1])
				continue;
			int j,k;
			j=i+1;
			k=num.size()-1;
			while(j<k){
				if(j>i+1&&num[j]==num[j-1]){ 
					j++;
					continue;
				}
				if(k<num.size()-1&& num[k]==num[k+1]){
					k--;
					continue;
				}
				 int sum = num[i] + num[j] + num[k];
				if(sum>0){
					k--;
				}else if(sum<0){
					j++;
				}else{
					vector<int> tmp;
					tmp.push_back(num[i]);
					tmp.push_back(num[j]);
					tmp.push_back(num[k]);
					ret.push_back(tmp);
					j++;
				}
			}
		}
		return ret;
            
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值