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

原题

一、

一开始以为是滑动窗口,之后发现是求子序列,不适用窗口

简单做法:取前k大的数,组成新序列,同时保证其相对顺序

class Solution:
    def maxSubsequence(self, nums: List[int], k: int) -> List[int]:
        n  =len(nums)
        s = []
        # 所有数存为二元组(值,下标)
        for i in range(n):
            s.append((nums[i], i))
        s.sort(key = lambda x : -x[0])  # 按值排倒序
        s = s[:k]   #取前k个
        s.sort(key = lambda x: x[1])	# 再按下标排序
        return [e[0] for e in s]	# 只把值写入

最后更新于