classSolution{public:inthardestWorker(int n, vector<vector<int>>& logs){int pre =0, maxv =0;int res =999999;for(int i =0; i < logs.size(); i ++){int id = logs[i][0], time = logs[i][1];if(maxv <= time - pre){if(maxv == time - pre) res =min(res, id);else res = id;
maxv = time - pre;}
pre = time;}return res;}};
T2 找出前缀异或的原始数组
classSolution{public:
vector<int>findArray(vector<int>& a){
vector<int> res;int t =0, sum =0;for(auto x : a){
t = x ^ sum;
res.push_back(t);
sum ^= t;}return res;}};
T3 使用机器人打印字典序最小的字符串
classSolution{public:int cnt[30]={0};boolcheck(char c){int t = c -'a';for(int i =0; i < t; i ++){if(cnt[i])returnfalse;}returntrue;}
string robotWithString(string s){
string res ="";for(int i =0; i < s.size(); i ++)
cnt[s[i]-'a']++;
stack<char> stk;
stk.push(s[0]);
cnt[s[0]-'a']--;for(int i =1; i < s.size(); i ++){while(stk.size()){
cnt[stk.top()-'a']++;if(check(stk.top())){
res += stk.top();
cnt[stk.top()-'a']--;
stk.pop();}else{
cnt[stk.top()-'a']--;break;}}
stk.push(s[i]);
cnt[s[i]-'a']--;}while(stk.size()) res += stk.top(), stk.pop();return res;}};
T4 矩阵中和能被 K 整除的路径
classSolution{public:int mod =1e9+7;intnumberOfPaths(vector<vector<int>>& a,int k){int n = a.size(), m = a[0].size();
vector<vector<int>>g(n+1,vector<int>(m +1,0));for(int i =0; i < n; i ++)for(int j =0; j < m; j ++)
g[i +1][j +1]= a[i][j];
vector<vector<vector<int>>>f(n+1,vector<vector<int>>(m+1,vector<int>(k +1,0)));
f[1][1][g[1][1]% k]=1;for(int i =1; i <= n; i ++)for(int j =1; j <= m; j ++)for(int u =0; u < k; u ++)if(i ==1&& j ==1)continue;else f[i][j][(u + g[i][j])% k]=(f[i -1][j][u]+ f[i][j -1][u])% mod;return f[n][m][0];}};