第一题
解题思路:
贪心思想,每次尽可能选择较小的整数nums[j],以此来保证最大长度
class Solution
{
public:
vector<int> answerQueries(vector<int>& nums, vector<int>& queries)
{
int n=nums.size();
int m=queries.size();
vector<int> answer;
sort(nums.begin(),nums.end());//排序
int temp,cnt;
for(int i=0;i<m;i++)
{
temp=0,cnt=0;
for(int j=0;j<n;j++)//从小到大选择整数nums[j]
{
if(temp+nums[j]<=queries[i])
{
temp+=nums[j];
cnt++;
}
if(temp+nums[j]>queries[i] || j==n-1)
{//此时cnt即为最大长度
answer.push_back(cnt);
break;
}
}
}
return answer;
}
};
第二题
解题思路:
遇到非星号则添加,遇到星号则删除,具体含义见代码可理解
class Solution
{
public:
string removeStars(string s)
{
string ans;
for(auto &a:s)
if(a!='*') ans+=a;
else ans.pop_back();
return ans;
}
};