当前位置:网站首页>LeetCode 1403.非递增顺序的最小子序列
LeetCode 1403.非递增顺序的最小子序列
2022-08-04 16:34:00 【Tisfy】
【LetMeFly】1403.非递增顺序的最小子序列
力扣题目链接:https://leetcode.cn/problems/minimum-subsequence-in-non-increasing-order/
给你一个数组 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
方法一:排序取大
既然让子序列长度尽可能短,那么就要子序列中每个数取值尽可能大。
因此对原数组排序,大的在前。
预处理时,原数组求和并记录。
从前到后取出原数组中的元素,累加到子序列的和中。
如果子序列的和 > 了剩余元素的和,就退出循环
返回子序列即可。
这样,满足题目要求的所有条件:严格大于、长度最小、元素和最大、非递增 等
- 时间复杂度 O ( n log n ) O(n\log n) O(nlogn),其中 n n n是原数组的长度
- 空间复杂度 O ( l o g n ) O(log n) O(logn)
AC代码
C++
class Solution {
public:
vector<int> minSubsequence(vector<int>& nums) {
int s = 0;
for (int i = 0; i < nums.size(); i++) {
s += nums[i];
}
sort(nums.begin(), nums.end(), greater<int>());
vector<int> ans;
int nowSum = 0;
for (int i = 0; i < nums.size(); i++) {
ans.push_back(nums[i]);
nowSum += nums[i];
if (nowSum > s - nowSum)
break;
}
return ans;
}
};
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126155397
边栏推荐
- NFT blind box mining system dapp development NFT chain game construction
- gcc7.5.0编译ceres-solver报错‘is_trivially_default_constructible’ is not a member of ‘std’
- 【Jprofile 11.0 安装】
- 数据库内核面试中我不会的问题(2)
- shell中当basename和dirname无法满足你的需求时你一定要想到的命令
- Mobile BesTV_R3300-L_S905L_8189_wire brush firmware package
- 工龄10年的测试员从大厂“裸辞”后...
- 【二叉树】根据描述创建二叉树
- CSDN21天学习挑战赛——程序流程控制(02)
- SAP HANA Schemas 和 HDI Containers
猜你喜欢
移动魔百盒CM201-1_CW_S905L2_MT7668_线刷固件包
06-总线
移动百事通BesTV_R3300-L_S905L_8189_线刷固件包
Mobile BesTV_R3300-L_S905L_8189_wire brush firmware package
黑龙江移动新魔百盒M411A_2+8_S905L3A_线刷固件包
No server is required, teach you to get real-time health code recognition with only 30 lines of code
会话劫持安全攻击
911S5正式谢幕后 如何找到一个好用的替代品
从正负样本解耦看对比学习为何需要large batch size训练Ddcoupled Contrastive learning (DCT)
【Idea设置运行参数无效】可能是...
随机推荐
NFT blind box mining system dapp development NFT chain game construction
显示和设置系统日期时间的date命令示例
18数藏解析
番茄插件番茄助手下载
SQL语言的分类以及数据库的导入
\/ PN的综合实验
18 Data Collection Analysis
黑龙江移动新魔百盒M411A_2+8_S905L3A_线刷固件包
Real-Time Rendering 4th相关资源整理(无需积分 传火)
【TA-霜狼_may-《百人计划》】美术2.7 Metallic 与 Speculer流程
06-总线
花 30 美金请 AI 画家弄了个 logo,网友:画得非常好,下次别画了!
备战9月,美团50道软件测试经典面试题及答案汇总
不需要服务器,教你仅用30行代码搞定实时健康码识别
容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据
"Distributed cloud best practices" BBS, on August 11, shenzhen
现代 ABAP 编程语言中的正则表达式
湖北移动HG680-LV_S905L3B_线刷固件包
历史上的今天:微软研究院的创始人诞生;陌陌正式上线;苹果发布 Newton OS
测试开发必备技能-Jmeter二次开发