【水】LeetCode 杯求组队

houpingze

2021-09-10 17:13:18

Personal

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; } }; ```