houpingze 的博客

膜拜zqs,sx,zlt,ymw,qyh官方博客

【水】LeetCode 杯求组队

rt,先放一个link

要求:会使用电脑

代码编写和平时的不太一样,大概就是叫你提供一个class,里面有一个能解决问题的函数,具体放个代码,大家应该能理解()

problem link

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int orz) {
        int n=nums.size();
        for(int i=0;i<n;i++) for(int j=i+1;j<n;j++){
            if(nums[i]+nums[j]==orz){
                vector<int>ret;
                ret.push_back(i);
                ret.push_back(j);
                return ret;
            }
        }
        vector<int>ret;
        return ret;//不加这个会 CE 。
    }
};

另外有一点,sort的cmp函数需要在前面加static

第二个例子

problem link

class Solution {
public:
    struct node{
        vector<int>a,b;
    };
    static bool cmp(vector<int> x,vector<int> y){
        if(x[0]!=y[0]) return x[0]<y[0];
        if(x[1]!=y[1]) return x[1]<y[1];
        return x[2]<y[2];
    }
    vector<vector<int>> threeSum(vector<int>& a){

        int n=a.size();
        sort(a.begin(),a.end());
        vector<vector<int>>rett;
        for(int i=0;i<n;i++){
            int k=n-1;
            if(i!=0&&a[i]==a[i-1]) continue;
            for(int j=i+1;j<n;j++){
                if(i==j) continue;
                if(j!=0&&j!=i+1&&a[j]==a[j-1]) continue;
                while(k!=0&&a[i]+a[j]+a[k]>0) k--;
                if(k==j) k--;
                if(k==i) k--;
                if(j>k) break;
                if(k<0) break;
                if(a[i]+a[j]+a[k]==0){
                    vector<int>ccf;
                    ccf.push_back(a[i]);
                    ccf.push_back(a[j]);
                    ccf.push_back(a[k]);
                    rett.push_back(ccf);
                }
            }
        }
        return rett;
    }
};

2021-09-10 17:13:18 in orz