leetcode1403题 非递增顺序的最小子序列
思路
贪心算法
从大到小依次取元素,直到取到满足条件的数组就可以
排序,先求和,只需要求到一个子序列的和大于剩下元素的和,就是要求的结果
class Solution {
public:
vector<int> minSubsequence(vector<int>& nums) {
//排序,先求和,只需要求到一个子序列的和大于剩下元素的和,就是要求的结果
int n=nums.size();
int sum=0;
//求和
for(int i=0;i<n;i++)
{
sum=sum+nums[i];
}
//排序
sort(nums.begin(),nums.end());
//存储结果数组,以及目前求得的和cuurSum
int curSum=0;
vector<int> res;
for(int i=n-1;i>=0;i--)
{
curSum=curSum+nums[i];
//把元素从大到小放进结果数组里
res.push_back(nums[i]);
//sum-目前求得的和curSum就是剩下元素的和,满足题意就返回数组
if(curSum>sum-curSum)
return res;
}
return {};
}
};