【水】LeetCode 杯求组队
houpingze
2021-09-10 17:13:18
rt,先放一个[link](https://leetcode-cn.com/contest/season/2021-fall/?modal=invite-join-team&teamSlug=zhi-zhang-dui&code=f085dcl)
~~要求:会使用电脑~~
代码编写和平时的不太一样,大概就是叫你提供一个`class`,里面有一个能解决问题的函数,具体放个代码,大家应该能理解()
[problem link](https://leetcode-cn.com/problems/two-sum/)
```cpp
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](https://leetcode-cn.com/problems/3sum/)
```cpp
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;
}
};
```