LeetCode刷题 | Day 1 最大子序列求和(Largest K Subsequence Sum)

本文介绍了LeetCode第2099题的最大子序列求和问题,采用贪心算法和滑动窗口方法解决。详细解析了思路、伪代码,并提供了Python和C++实现。同时,文章还总结了相关英语词汇。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LeetCode刷题 | Day 1 最大子序列求和(Largest K Subsequence Sum)



前言

LeetCode位置:2099. 找到和最大的长度为 K 的子序列

日常刷题,维持手感,同步学习英语,刷题顺序参考B站UP@justyyuk的系列视频,感兴趣的点波关注。
学海无涯,大路千万,感恩此程,彼此真诚陪伴!
在这里插入图片描述
Ps:第一次刷到的道友留步,这里拉齐一下信息。文章主要记录视频中的主要内容,算法思路会按照个人理解,用伪代码+举例每步输出的方式呈现。代码部分会以Python和C++语法进行呈现。文章最后会总结一些英语词汇。OK,就啰嗦这么多,开始进步[干杯🐱‍👓]


一、题目概述

Day1题目
输入:nums列表和子序列长度k
输出:和最大的长度为k的子序列

PS:

  1. 子序列 (Subsequence):

    • 子序列是通过从原始序列中删除一些或不删除任何元素且不改变剩余元素顺序而得到的序列。
    • 例子:对于序列 [1, 2, 3, 4],[1, 3, 4] 和 [2, 4] 是子序列。
    • 注意:[1, 4, 3] 不是 子序列,因为顺序改变了。
  2. 子列表 (Sublist)

    • 子列表是列表的连续部分,意味着元素必须是连续的。
    • 例子:对于列表 [1, 2, 3, 4],[2, 3] 和 [1, 2, 3]是子列表。
    • 注意:[1, 3] 不是 子列表,因为它不是连续的。
  3. 子数组 (Subarray):

    • 类似于子列表,子数组是数组的连续部分。
    • 例子:对于数组 [1, 2, 3, 4],[2, 3] 和 [1, 2, 3] 是子数组。
    • 注意:[1, 3] 不是 子数组,因为它不是连续的。
  • 在许多情况下,当数据结构是数组或列表时,“子列表”和“子数组”可以互换使用,但“子数组”一词专门用于数组。

二、解题方法

2.1 贪心思路

2.1.1 思路讲解

Ps: 贪心算法的特征
- 局部最优解:每一步都选择当前最优的元素(即最大的k个元素)。
- 全局最优解:通过局部最优解的选择,最终获得问题的全局最优解(即总和最大的子序列)。

  • 贪心策略

    • 选择局部最优解:为了使子序列的总和最大,我们选择nums中最大的k个元素。
    • 保证相对顺序:尽管我们选择了最大的k个元素,我们仍需保证它们在原序列中的相对顺序。
  • 具体步骤

    • 排序选择:我们对nums进行排序并选择最大的k个元素。
    • 保持顺序:选出最大的k个元素后,我们需要按原序列的索引排序,以保持它们的相对顺序。

2.1.2 伪代码 + 逐步输出示例

# 伪代码示例
函数 maxSubsequence(nums, k):
    断言 k > 0 并且 k <= nums 的长度
    将 nums 转换为带有索引的列表 arr
    按数值对 arr 进行排序
    取 arr 中最大的 k 个元素的索引 idx
    对 idx 进行排序
    返回 nums 中对应 idx 的元素

# 逐步输出示例
输入: nums = [3, 5, 2, 9, 8], k = 3
步骤:
1. 验证 k 的合法性: k > 0 并且 k <= 5
2. arr = [(0, 3), (1, 5), (2, 2), (3, 9), (4, 8)]
3. arr 排序后: [(2, 2), (0, 3), (1, 5), (4, 8), (3, 9)]
4. 取最大的 3 个元素: [(1, 5), (4, 8), (3, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上坤

涓涓细流,生活不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值