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 {};
}
};
该博客详细介绍了如何使用贪心算法解决LeetCode第1403题——非递增顺序的最小子序列。作者首先解释了思路,即从大到小选取元素,直到找到一个子序列的和大于剩余元素的和。接着,通过排序和遍历数组,逐步构建满足条件的子序列,并在满足条件时返回结果。整个过程简洁明了,适合学习算法和LeetCode挑战者参考。
400

被折叠的 条评论
为什么被折叠?



