链表习题-力扣oj (附加思路版)

LCR 140. 训练计划 IIicon-default.png?t=N7T8https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/

        给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。

思路:双指针,快指针先走cnt步然后快慢指针同时向前走,当快指针为空时慢指针所在位置即为倒是第cnt个编号

 

class Solution {
public:ListNode* trainingPlan(ListNode* head, int cnt) {ListNode *fast=head,*slow=head;for(int i=1;i<=cnt;i++)fast=fast->next;while(fast){fast=fast->next;slow =slow->next;}return slow;}
};

141. 环形链表icon-default.png?t=N7T8https://leetcode.cn/problems/linked-list-cycle/

        如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。

思路:双指针,一个快指针一个慢指针,快指针每次走两步(有风险:快指针可能为要特殊处理一下)慢指针走一步。如果两个指针能相遇则有环,如果不能相遇则没有环

class Solution {
public:bool hasCycle(ListNode *head) {ListNode *fast=head,*slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow)return 1;}return false;}
};

26. 删除有序数组中的重复项icon-default.png?t=N7T8https://leetcode.cn/problems/remove-duplicates-from-sorted-array/

        给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

思想:双指针,快指针如果与慢指针相等快指针++,当快指针不等于慢指针时,慢指针++快慢赋值给慢指针,然后快指针++。直到快指针遍历完数组结束。

class Solution {
public:int removeDuplicates(vector<int>& nums) {int fast=1,slow=0;if(nums.size()==1)return 1;while(fast<nums.size()){if(nums[fast]==nums[slow])fast++;else{slow++;nums[slow]=nums[fast];fast++;}}return slow+1;}
};

53. 最大子数组和icon-default.png?t=N7T8https://leetcode.cn/problems/maximum-subarray/

        给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。

思路:将数组和与最大和比较,如果数组和大于最大和则更新,否则最大和加下一位数组元素判断有没有当前最大和大。

class Solution {
public:int maxSubArray(vector<int>& nums) {int max=INT_MIN;int sum=0;for(int i=0;i<nums.size();i++){sum+=nums[i];if(sum>max)max=sum;if(sum<0)sum=0;}return max;}
};

876. 链表的中间结点icon-default.png?t=N7T8https://leetcode.cn/problems/middle-of-the-linked-list/

        给你单链表的头结点 head ,请你找出并返回链表的中间结点。

        如果有两个中间结点,则返回第二个中间结点。

思路:快指针走两步慢指针走一步

class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* fast=head,*slow =head;while(fast&& fast->next){fast=fast->next->next;slow=slow->next;}return slow;}
};

21. 合并两个有序链表icon-default.png?t=N7T8https://leetcode.cn/problems/merge-two-sorted-lists/

        将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

思路:当头节点和中间节点的处理方式不同时手动添加一个虚头节点

class Solution {
public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {//创建虚头节点ListNode* Head = new ListNode();ListNode* Tail = Head;while(l1 && l2){if(l1->val<=l2->val){Tail->next=l1;l1=l1->next;}else{Tail->next=l2;l2=l2->next;}Tail=Tail->next;}//判断剩余if(l1) Tail->next=l1;if(l2) Tail->next=l2;return Head->next;}
};

 

 

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

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

相关文章

策略梯度网络

策略梯度网络是强化学习中的一类算法,它们直接学习一个策略,该策略可以映射从环境状态到采取的动作。与值函数方法(如Q学习和深度Q网络)不同,策略梯度方法通过优化策略本身来实现目标,即直接调整其输出动作的概率,以最大化累积奖励。这类方法的核心优势在于它们能够自然…

007-常见HTTP状态码

常见HTTP状态码 常见状态码说明常见状态码 常见状态码说明 状态码说明1xx&#xff08;informational&#xff09;信息性状态码&#xff0c;表示正在处理2xx&#xff08;success&#xff09;成功状态码&#xff0c;表示请求正常3xx&#xff08;redirection&#xff09;重定向状…

WinDbg无符号调试DriverEntry中断

无符号文件的驱动中断DriverEntry方法 当我们调试有符号的windows驱动时&#xff0c;通常可以使用bu module!DriverEntry, 在模块的DriverEntry位置打上断点。 那么对于无符号驱动&#xff0c;应该如何找到DriverEntry函数的位置呢&#xff1f; 从正常的DriverEntry的调用栈…

OceanBase社区版手动部署单副本集群及OBProxy

OceanBase社区版手动部署单副本集群及OBProxy 文章目录 OceanBase社区版手动部署单副本集群及OBProxy一、环境准备二、部署observer三、集群初始化四、部署obproxy五、创建租户、数据库、表六、避坑指导七、参考链接 一、环境准备 oceanbase社区版部署单副本集群&#xff0c;要…

Java项目:40 springboot月度员工绩效考核管理系统009

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本系统的功能分为管理员和员工两个角色 管理员的功能有&#xff1a; &#xff08;1&#xff09;个人中心管理功能&#xff0c;添加管理员账号…

多线程相关面试题(2024大厂高频面试题系列)

1、聊一下并行和并发有什么区别&#xff1f; 并发是同一时间应对多件事情的能力&#xff0c;多个线程轮流使用一个或多个CPU 并行是同一时间动手做多件事情的能力&#xff0c;4核CPU同时执行4个线程 2、说一下线程和进程的区别&#xff1f; 进程是正在运行程序的实例&#xff…

Java 重写和重载

重写 重写一定是在父子类之间&#xff0c;不可能在一个类中。 要求&#xff1a; 1、方法名一致 2、方法名称一致&#xff0c;参数类型列表一致&#xff0c;返回结果类型一致 3、子类方法的范围限定词需要大于等于父类的范围 4、子类方法不能比父类方法抛出更多的异常 重载…

XSS靶场-初级关卡

一、环境 XSS靶场 二、闯关 1、第一关 先看源码 使用DOM型&#xff0c;获取h2标签&#xff0c;使用innerHTML将内容插入到h2中 我们直接插入<script>标签试一下 明显插入到h2标签中了&#xff0c;为什么不显示呢&#xff1f;看一下官方文档 尽管插入进去了&#xff0…

【学习资源】对比说明三个通过作者查找文献数据库(一)

最近博主在阅读相关文献的时候&#xff0c;想针对一些作者的科研文献做一个详细的了解&#xff0c;于是涉及到“如何已知作者与其所在单位&#xff0c;查找其研究成果”的问题&#xff0c;博主尝试了在Google Scholar、Web of Science、CRS核心论文库这三个地方通过作者查找文献…

程序异常结束退出 无输出 无显式报错日志 爆栈

需求 开一个很大的数组&#xff08;300万&#xff09; ❗ 错误示例 #include <stdio.h>int main() {int size 3000000;int a[size];a[size-1] 999;printf("%d",a[size-1]);return 0; }&#x1f60b; 解决方案 局部变量存储在栈空间 &#xff08;较小&…

HarmonyOS(二)Ability应用模型概述

目录 1 Ability概念 2 Ability形态 3 Stage优势 4 Stage模型结构 5 总结 注&#xff1a;本章内容提前声明。 基于HarmonyOS开发者3.1/4.0版本配套的开发者文档&#xff0c;对应API能力级别为API 9 Release。 详情可参考官网API入门第一章应用模型文档中心 1 Ability概念…

绳牵引并联机器人动态避障方法

绳牵引并联机器人在受限空间中如何躲避动态障碍物&#xff0c;是个有挑战的课题。 来自哈尔滨工业大学&#xff08;深圳&#xff09;的熊昊老师团队&#xff0c;开展了一项有趣的研究&#xff0c;论文《Dynamic Obstacle Avoidance for Cable-Driven Parallel Robots With Mob…

golang中go build 后读取配置文件

golang打包后读取配置文件 在用go写代码的时候&#xff0c;为了好用经常使用go build 打包&#xff0c;如果我们用到了配置文件&#xff0c;就总是导致不能找到文件所在位置了出现bug&#xff0c;所以以下代码就解决了这个问题。 核心代码&#xff1a; file, err : exec.Look…

Vue中的v-for中为什么不推荐使用index作为key值

在Vue中&#xff0c;我们经常会用到v-for指令来遍历数组或对象并渲染列表。而在使用v-for指令时&#xff0c;通常会需要给每个遍历的元素指定一个唯一的key值&#xff0c;以帮助Vue更高效地更新DOM。 在很多情况下&#xff0c;我们可能会倾向于使用index作为key值&#xff0c;…

RK android13 伪装第三方应用为Persistent apps

目录frameworks/base diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 7bde11cfb3ac..781940308421 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/conten…

易我分区大师18.2正式上线,赶紧来体验一下

近日&#xff0c;易我科技发布了易我分区大师18.2&#xff0c;该版本在功能和性能上进行了全面的升级和优化&#xff0c;为用户提供更加便捷的磁盘管理体验。 ▲ 易我分区大师18.2版本的首页 易我分区大师是一款功能强大的磁盘分区管理软件&#xff0c;它可以帮助用户轻松地管…

Promisification、微任务

前提摘要 Promise 对象的构造器&#xff08;constructor&#xff09;语法如下&#xff1a; let promise new Promise(function(resolve, reject) { // executor }); 传递给 new Promise的函数被称为 executor&#xff0c;当 new Promise 被创建&#xff0c;executor 会自动…

vite+vue3使用UEditorPlus ,后端PHP

vitevue3使用UEditorPlus 百度富文本编辑器是目前所有编辑器中功能最丰富的&#xff0c;但长时间不进行维护了。 之前写了一篇使用UEditor的教程&#xff0c;最近发现一个UEditorPlus&#xff0c;总结一下如何使用 什么是UEditorPlus 基于 UEditor 二次开发的富文本编辑器&…

猫冻干价格差距大的原因是什么?价格合理、性价比高的生骨肉冻干分享

科学养猫知识的普及&#xff0c;铲屎官们逐渐意识到了生骨肉冻干喂养的益处。然而&#xff0c;价格因素仍是部分铲屎官的阻碍。实际上&#xff0c;像我这样的资深铲屎官&#xff0c;早已认识到生骨肉冻干的价值。虽然价格略高于烘焙粮和膨化粮&#xff0c;但其对猫咪的益处是实…

MapStruct 教程

MapStruct 教程 一、MapStruct 简介 MapStruct 是一个基于约定的代码生成器&#xff0c;用于在 Java bean 类型之间进行转换。它极大地简化了对象之间的映射过程&#xff0c;减少了手动编写映射代码的工作量。MapStruct 通过注解处理器在编译时生成映射代码&#xff0c;因此运…