首页 > 其他分享 >leetcode 2099. 找到和最大的长度为 K 的子序列

leetcode 2099. 找到和最大的长度为 K 的子序列

时间:2024-11-27 22:12:01浏览次数:6  
标签:begin temp nums int vals vector 序列 2099 leetcode

2099. 找到和最大的长度为 K 的子序列

特别注意,题目要求不改变原来的元素顺序

我的代码

class Solution {
public:
    vector<int> maxSubsequence(vector<int>& nums, int k) {
        vector<int> temp(nums);
        sort(temp.begin(),temp.end());
        int size = temp.size();
        for(int i = 0;i < size - k;i++){
            int t = temp[i];//效率还是很低,比如几个相同的元素找到还要从头再找一遍
            auto it = find(nums.begin(),nums.end(),t);
            nums.erase(it);
        }
        return nums;
    }
};

题解代码

class Solution {
public:
    vector<int> maxSubsequence(vector<int>& nums, int k) {
        int n = nums.size();
        vector<pair<int, int>> vals;   // 辅助数组
        for (int i = 0; i < n; ++i) {
            vals.emplace_back(i, nums[i]);
        }
        // 按照数值降序排序
        sort(vals.begin(), vals.end(), [&](auto x1, auto x2) {
            return x1.second > x2.second;
        });
        // 取前 k 个并按照下标升序排序
        sort(vals.begin(), vals.begin() + k);
        vector<int> res;   // 目标子序列
        for (int i = 0; i < k; ++i) {
            res.push_back(vals[i].second);
        }
        return res;
    }
};

 

标签:begin,temp,nums,int,vals,vector,序列,2099,leetcode
From: https://www.cnblogs.com/uacs2024/p/18573203

相关文章

  • 代码随想录算法训练营第十四天(统一迭代;LeetCode226.翻转二叉树;LeetCode101.对称二叉树
    统一迭代LeetCode144.二叉树的前序遍历题目链接:二叉树的前序遍历题目链接代码/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval)......
  • H5-6 列表标签 有序列表
    1、有序标签有序列表是一列项目,列表项目使用数学进行标记。有序列表始于<ol>标签。每个列表始于<li>标签。  <ol>    <li></li>    <li></li>  </ol> 2、type属性:<ol>的属性type拥有的选项1表示列表项目用数字标号(1,2,3...)......
  • leetcode3208. 交替组 II
    循环数组问题,指针问题代码比较好实现的,只需要对右端点维护,如果达到了>=k便可以被计数,循环数组可以两边循环做到点击查看代码classSolution{publicintnumberOfAlternatingGroups(int[]colors,intk){intn=colors.length;intans=0;......
  • LeetCode移除元素
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:更改 nums 数组,使 nums 的前 k 个......
  • LeetCode2 两数相加
    LeetCode2两数相加题目链接:LeetCode2描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。示......
  • LeetCode21 合并两个有序链表
    LeetCode21合并两个有序链表题目链接:LeetCode21描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]思路方法一:迭代遍历两个列表,逐一比较时间复杂度:O(n+m)......
  • LeetCode第31题:"下一个排列" C#篇
    理解题意: 这道题大概的意思是,将nums数组换一个排列方式,但要求比当前排列要大并且是当前数组大的排列中最小的一种排列思路:相信很多人看到这题第一个会想到的思路是,我只需要将这个数组所有比当前数组大的排列都整理出来,再选出最小的那一个排列,此题可解很显然啊....这不是一......
  • 【leetcode】括号生成 c++回溯法
    22.括号生成 22.括号生成-力扣(LeetCode)数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8......
  • MATLAB 实现 SSA-GRU和 GRU(门控循环单元)结合麻雀算法优化时间序列预测
    目录1.项目概述...11.1背景...11.2模型描述...12.项目设计...12.1数据生成...12.2TTA分解...22.3GTT模型构建...32.4麻雀算法优化GTT超参数...32.5模型训练与预测...42.6结果评估与优化前后比较...43.完整代码...54.项目总结...7未来......
  • MATLAB使用 BiLSTM(双向长短期记忆神经网络)进行多变量时间序列预测
    目录1.项目概述...11.1背景...11.2模型描述...12.项目设计...12.1数据生成或准备...12.2BrtiLTTM模型构建...22.3模型训练与预测...22.4结果评估与可视化...33.完整代码...44.参考资料...65.未来改进方向...6下面是一个基于MATLAB的项目......