第一题:2389. 和有限的最长子序列
思路:贪心,将原数组排序后看最长几个即可
class Solution {
public:
vector<int> answerQueries(vector<int>& nums, vector<int>& queries) {
sort(nums.begin(), nums.end());
vector<int> res;
for(int i = 0; i < queries.size(); i++){
int sum = 0;
for(int j = 0; j < nums.size(); j++){
sum += nums[j];
if(sum > queries[i]){
res.push_back(j);
break;
}
}
if(sum <= queries[i]) res.push_back(nums.size());
}
return res;
}
};
第二题:2390. 从字符串中移除星号
思路:一轮遍历,如果遍历到星号则将答案最后的字符弹出,如果不为则保存在结果内即可
class Solution {
public:
string removeStars(string s) {
string res;
for(auto ch : s){
if(ch == '*') res.pop_back();
else res.push_back(ch);
}
return res;
}
};
思路:直接暴力,记录一下三辆车最后的位置加上来即可
class Solution {
public:
int garbageCollection(vector<string>& garbage, vector<int>& travel) {
int res = 0;
int a = 0,b = 0,c = 0;//记录三辆车最后的位置
for(int i = 0; i < garbage.size(); i++){
for(int j = 0; j < garbage[i].size(); j++){
if(garbage[i][j] == 'M'){
res++;
a = i;
}
else if(garbage[i][j] == 'P'){
res++;
b = i;
}
else if(garbage[i][j] == 'G'){
res++;
c = i;
}
}
}
int n = travel.size();
for(int i = 0; i < a; i++){
res += travel[i];
}
for(int i = 0; i < b; i++){
res += travel[i];
}
for(int i = 0; i < c; i++){
res += travel[i];
}
return res;
}
};