通过万岁!!!
- 题目:给你一个数组,然后从里面选出一些数来,使得选出来的数之和大于剩下的数之和。如果有多个结果,返回长度最小的,如果还是有很多结果,则返回挑出来的数组的和最大的。
- 思路:对数组进行排序,然后从后面开始选出来,其实有点贪心的意思,这样我们拿出来的一定是尽快让外面数组最大的。
- 技巧:贪心算法
class Solution {
public List<Integer> minSubsequence(int[] nums) {
Arrays.sort(nums);
int sumNum = Arrays.stream(nums).sum();
int sumList = 0;
List<Integer> ans = new ArrayList<>();
for (int i = nums.length - 1; i >= 0; --i) {
ans.add(nums[i]);
sumList += nums[i];
sumNum -= nums[i];
if (sumList > sumNum) {
return ans;
}
}
return ans;
}
}
- 总结:题目还是比较简单的,主要是思路。