鹰潭门户网站建设费用,免费注册公司免费注册,极简wordpress博客,烟台网站推广排名文章目录1. 题目2. 解题1. 题目
给你一个整数数组 nums 和一个整数 k 。 你需要找到 nums 中长度为 k 的 子序列 #xff0c;且这个子序列的 和最大 。
请你返回 任意 一个长度为 k 的整数子序列。
子序列 定义为从一个数组里删除一些元素后#xff0c;不改变剩下元素的顺…
文章目录1. 题目2. 解题1. 题目
给你一个整数数组 nums 和一个整数 k 。 你需要找到 nums 中长度为 k 的 子序列 且这个子序列的 和最大 。
请你返回 任意 一个长度为 k 的整数子序列。
子序列 定义为从一个数组里删除一些元素后不改变剩下元素的顺序得到的数组。
示例 1
输入nums [2,1,3,3], k 2
输出[3,3]
解释
子序列有最大和3 3 6 。示例 2
输入nums [-1,-2,3,4], k 3
输出[-1,3,4]
解释
子序列有最大和-1 3 4 6 。示例 3
输入nums [3,4,3,3], k 2
输出[3,4]
解释
子序列有最大和3 4 7 。
另一个可行的子序列为 [4, 3] 。提示
1 nums.length 1000
-10^5 nums[i] 10^5
1 k nums.length来源力扣LeetCode 链接https://leetcode-cn.com/problems/find-subsequence-of-length-k-with-the-largest-sum 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
方法很多先找出最大的 k 个数排序堆都可以然后遍历数组按顺序取出来
class Solution {
public:vectorint maxSubsequence(vectorint nums, int k) {multisetint s;for(auto num : nums){if(s.size() k)s.insert(num);else if(*s.begin() num){s.erase(s.begin());s.insert(num);}} // 最大的 k 个数 在 s 中vectorint ans;for(auto num : nums){auto it s.find(num);if(it ! s.end()){ans.push_back(*it);s.erase(it);}}return ans;}
};0 ms 9.6 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步