1403.非递增顺序的最小子序列
This commit is contained in:
parent
51ddfe3c8d
commit
cae5428c7a
|
@ -176,6 +176,7 @@ mod q1218;
|
|||
mod q1269;
|
||||
mod q1310;
|
||||
mod q1374;
|
||||
mod q1403;
|
||||
mod q1447;
|
||||
mod q1473;
|
||||
mod q1482;
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
use crate::Solution;
|
||||
|
||||
impl Solution {
|
||||
/// [1403.非递增顺序的最小子序列](https://leetcode.cn/problems/minimum-subsequence-in-non-increasing-order/)
|
||||
///
|
||||
/// 2022-08-04 09:25:17
|
||||
///
|
||||
///给你一个数组 `nums`,请你从中抽取一个子序列,满足该子序列的元素之和 **严格** 大于未包含在该子序列中的各元素之和。
|
||||
///
|
||||
/// 如果存在多个解决方案,只需返回 **长度最小** 的子序列。如果仍然有多个解决方案,则返回 **元素之和最大** 的子序列。
|
||||
///
|
||||
/// 与子数组不同的地方在于,「数组的子序列」不强调元素在原数组中的连续性,也就是说,它可以通过从数组中分离一些(也可能不分离)元素得到。
|
||||
///
|
||||
/// **注意**,题目数据保证满足所有约束条件的解决方案是 **唯一** 的。同时,返回的答案应当按 **非递增顺序** 排列。
|
||||
///
|
||||
/// + **示例 1:**
|
||||
/// + **输入:** nums = \[4,3,10,9,8\]
|
||||
/// + **输出:** \[10,9\]
|
||||
/// + **解释:** 子序列 \[10,9\] 和 \[10,8\] 是最小的、满足元素之和大于其他各元素之和的子序列。但是 \[10,9\] 的元素之和最大。
|
||||
/// + **示例 2:**
|
||||
/// + **输入:** nums = \[4,4,7,6,7\]
|
||||
/// + **输出:** \[7,7,6\]
|
||||
/// + **解释:** 子序列 \[7,7\] 的和为 14 ,不严格大于剩下的其他元素之和(14 = 4 + 4 + 6)。因此,\[7,6,7\] 是满足题意的最小子序列。注意,元素按非递增顺序返回。
|
||||
/// + **示例 3:**
|
||||
/// + **输入:** nums = \[6\]
|
||||
/// + **输出:** \[6\]
|
||||
/// + **提示:**
|
||||
/// * `1 <= nums.length <= 500`
|
||||
/// * `1 <= nums[i] <= 100`
|
||||
/// + Related Topics
|
||||
/// * 贪心
|
||||
/// * 数组
|
||||
/// * 排序
|
||||
/// * 👍 63
|
||||
/// * 👎 0
|
||||
pub fn min_subsequence(mut nums: Vec<i32>) -> Vec<i32> {
|
||||
let sum = nums.iter().sum::<i32>();
|
||||
let mut sub_sum = 0;
|
||||
nums.sort_unstable();
|
||||
nums.reverse();
|
||||
for i in 0..nums.len() {
|
||||
sub_sum += nums[i];
|
||||
if (sub_sum << 1) > sum {
|
||||
return nums[0..=i].to_owned()
|
||||
}
|
||||
}
|
||||
nums
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::Solution;
|
||||
|
||||
#[test]
|
||||
fn test_q1403() {
|
||||
assert_eq!(Solution::min_subsequence(vec![4, 4, 7, 6, 7]), vec![7, 7, 6]);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue