题目链接:1403. 非递增顺序的最小子序列
Ideas
算法:迭代
数据结构:无
思路:先把nums
排个序,然后从后往前取,如果当前取得数之和大于剩下的数,则break。
Code
C++
class Solution {
public:
vector<int> minSubsequence(vector<int>& nums) {
vector<int> ans;
int total = accumulate(nums.begin(), nums.end(), 0), curSum = 0;
sort(nums.begin(), nums.end());
for (int i = nums.size() - 1; i > -1; i--) {
curSum += nums[i];
ans.emplace_back(nums[i]);
if (total - curSum < curSum) {
break;
}
}
return ans;
}
};