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

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


文章目录

  • LeetCode刷题 | Day 1 最大子序列求和(Largest K Subsequence Sum)
  • 前言
  • 一、题目概述
  • 二、解题方法
    • 2.1 贪心思路
      • 2.1.1 思路讲解
      • 2.1.2 伪代码 + 逐步输出示例
      • 2.1.3 Python代码如下
      • 2.1.4 C++代码如下
    • 2.2 贪心和滑窗思路
      • 2.2.1 思路讲解
      • 2.2.2 伪代码 + 逐步输出示例
      • 2.2.3 Python代码如下
      • 2.2.4 C++代码如下
  • 三、英语词汇


前言

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用WebStorm和VS Code断点调试Vue

大家好&#xff0c;我是咕噜铁蛋&#xff01;。今天&#xff0c;我想和大家分享一下如何在WebStorm和VS Code这两款流行的开发工具中&#xff0c;使用断点调试Vue.js项目。Vue.js作为前端三大框架之一&#xff0c;以其轻量级和组件化的特性&#xff0c;受到了广大开发者的喜爱。…

客观评价一下GPT-4o

评价GPT-4o&#xff08;即OpenAI发布的升级版语言模型&#xff09;&#xff0c;以下是上大学网&#xff08;www.sdaxue.com&#xff09;从技术能力与创新性、性能与效率、功能实用性与用户体验等几个维度进行评价&#xff0c;不周之出&#xff0c;请大家指正。 技术能力与创新性…

C++生成dll方法

#pragma once #ifdef NCNN_EXPORTS #define createV8ncnn __declspec(dllexport) #else #define createV8ncnn __declspec(dllimport) #endif #include "yolov8.h" //原来的写法 extern "C" { __declspec(dllexport) void createYolov8NCNN(char* par…

PTA字符串str1在第i个位置插入字符串str2

字符串str1在第i个位置插入字符串str2&#xff0c;如在字符串1234567890第2位插入ABC。 输入格式: 1234567890 ABC 2 输出格式: 12ABC34567890 #include<stdio.h> #include<string.h> int main() {char s1[100],s2[100];int w;scanf("%s%s%d",s1,s2,…

文件处理实践

文章目录 1.输出布尔数据2.输出整型数据3.输出浮点数4.取消省略空白符5.istringstream使用6.ostringstream使用7.读取文件8.写入文件 1.输出布尔数据 2.输出整型数据 3.输出浮点数 4.取消省略空白符 5.istringstream使用 6.ostringstream使用 7.读取文件 8.写入文件 #i…

专业FBA海运货代是什么?为什么用FBA?

一、专业FBA海运货代概述 专业FBA海运货代是专门为卖家提供海运货物进入亚马逊仓库服务的一种行业。FBA&#xff0c;全称Fulfilled by Amazon&#xff0c;即亚马逊代发货服务&#xff0c;是亚马逊为卖家提供的一种物流服务。卖家将货物发往亚马逊并寄存在其仓库&#xff0c;商…

Java的冷知识你知道吗?

1、方法参数不能超过255个 在Java中&#xff0c;方法的参数数量是有限制的&#xff0c;最多不能超过255个。这个知识点可能对于大多数程序员来说并不常用&#xff0c;因此即使是经验丰富的Java开发者也可能不清楚这一点。2、Java中的自动装箱与拆箱 自动装箱是Java 5引入的新特…

Kimichat使用案例006:用kimichat快速制作文章对应的英语词汇表

文章目录 一、介绍二、步骤三、输入的英文内容四、Kimi操作内容五、Kimi输出内容一、介绍 读了一篇英语文章,或者看了一部英语电影的台词本,想把里面不懂的词汇做成词汇表。以前必须自己手动一个个把词汇摘出来,现在有了AI,可以很轻松的一键完成。 二、步骤 首先,确定自己…

C++的算法:贪心算法

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效,它所做的每一个选择都是基于一个局部最优决策,从而希望导致全局最优解。然而,贪心算…

UNIAPP视频获取每个10%的位置

使用timeupdate获取视频长于和当前位置 onPlay(e) {const wakit e.detail.duration / 10;const currentTime e.detail.currentTime;console.warn(wakit, currentTime);for (let i 1; i < 10; i) {if (currentTime > (wakit * i) && currentTime < (wakit …

刷新页面控制台莫名奇妙报错显示/files/test_files/file_txt.txt

今天突然发现每次刷新页面都有几个报错&#xff0c;不刷新页面就没有。 这个报错应该不是我们系统的问题&#xff0c;是因为装了浏览器插件的原因。比如我安装了 大家有没有遇到类似的问题。

【Linux】多进程基础

文章目录 查看进程相关命令进程相关函数孤儿进程僵尸进程进程回收进程通信&#xff08;IPC&#xff09;匿名管道pipe通信的使用有名管道&#xff1a;FIFO 查看进程相关命令 ps -ef&#xff1a; System V 风格查询所有的进程信息&#xff0c;-e 参数表示显示所有进程&#xff0…

Apipost IDEA 插件使用说明

Apipost Helper作为IDEA插件&#xff0c;可以快速生成和查询API文档&#xff0c;直观友好地在IDE中调试接口。它简化了开发流程并提升效率&#xff0c;即使新手也能够迅速掌握。Apipost Helper提供了诸多便捷功能&#xff0c;如通过代码查找接口或者通过接口查找代码等&#xf…

java反射机制及beanUtils的实现原理

目录 1.反射机制说明 2.VO,DTO,PO的说明 3.beanUtils的实现原理 4.beanUtils的简单示例 1.反射机制说明 Java的反射机制允许程序在运行时检查和操作类、方法、字段等结构。通过反射&#xff0c;可以动态地创建对象、调用方法、获取/设置字段的值&#xff0c;而无需在编译时…

LLM主要类别架构

LLM主要类别架构介绍 LLM主要类别 LLM本身基于transformer架构。自2017年&#xff0c;attention is all you need诞生起&#xff0c;transformer模型为不同领域的模型提供了灵感和启发。基于原始的Transformer框架&#xff0c;衍生出了一系列模型&#xff0c;一些模型仅仅使用e…

分享一篇压箱底的融合通信技术方案

随着信息技术的发展和通信行业的变革&#xff0c;传统的电信、互联网和移动通信等领域开始融合&#xff0c;形成了融合通信的概念。借助5G、物联网、云计算和大数据等新技术的不断涌现&#xff0c;融合通信技术迎来大发展&#xff0c;在各行各业中有重要应用&#xff0c;融合通…

机床测头助力零部件自动化生产

随着国内制造业朝着自动化、智能化方向快速发展&#xff0c;产品质量检测也由过去的脱机、人工检测方式向在线自动检测转变&#xff0c;作为在线检测的重要工具&#xff0c;机床测头在制造业自动化生产过程中发挥着非常重要的作用。 1.自动化检测与防呆&#xff1a;机床测头可以…

Python面试宝典:Python中与代码性能优化相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第二十一章:代码性能优化:第一节:代码性能优化】 第二十一章:代码性能优化第一节:代码性能优化1. 使用内置数据类型2. 利用列表推导式和生成器表达式3. 使用局部变量4. 减少函数调用…

102.网络游戏逆向分析与漏洞攻防-ui界面的设计-反隐身功能的界面设计与实现(有不使用MFC生成,自己手写代码创建复选框与事件的例子)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

经典JS面试题——数组去重

文章目录 一、双指针二、filter方法三、includes四、indexOf五、reduce()六、set 一、双指针 基本思想&#xff1a;遍历数组&#xff0c;两层for循环比较元素是否相等&#xff0c;相等就删除重复元素。 代码如下 for(var i0;i<arr.length;i) {for(var ji1;j<arr.length…