代码随想录刷题随记4-链表

代码随想录刷题随记4

文章目录

  • 代码随想录刷题随记4
    • 24. 两两交换链表中的节点
    • 19.删除链表的倒数第N个节点
    • 面试题 02.07. 链表相交
    • 142.环形链表II

24. 两两交换链表中的节点

leetcode 链接
没什么技巧,主要考察链表操作的熟练程度

class Solution {
public:ListNode* swapPairs(ListNode* head) {if(head==nullptr){return nullptr;}ListNode * virhead=new ListNode(0);virhead->next=head;ListNode * cur=head;ListNode * next=cur->next;ListNode * tmp;ListNode * pre=virhead;while(cur!=nullptr&&next!=nullptr){tmp=next->next;pre->next=next;cur->next=tmp;next->next=cur;pre=cur;cur=tmp;if(cur!=nullptr){next=cur->next;}   }return virhead->next;}
};

19.删除链表的倒数第N个节点

leetcode链接
因为是倒数的第n个节点而不是正数的节点,所以为了满足一遍遍历就能找到,可以让快指针和慢指针之间间隔n。快慢指针的经典应用
解题代码如下所示:

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode * virhead=new ListNode(0);virhead->next=head;ListNode * fast;ListNode * slow;fast=virhead;slow =virhead;if(head==nullptr){return nullptr;}while(n>0){if(fast==nullptr){return head;}fast=fast->next;n--;}fast=fast->next;//为了让slow指向要删除的上一个,fast多走一部while(fast!=nullptr){fast=fast->next;slow=slow->next;}slow->next=slow->next->next;return virhead->next;}
};

面试题 02.07. 链表相交

leetcode链接
可以用集合筛选相同的节点即相交节点,但是那样会有额外的空间
采用双指针的方式解决。
首先先求两个链表的长度,找出长链表比短链表长多少,如果两个链表相交,交点一定在这个长度之后。
题解链接
解题代码:

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode * cur1;ListNode * cur2;cur1=headA;cur2=headB;int lengthA=0;int lengthB=0;while(cur1!=nullptr){cur1=cur1->next;lengthA++;}while(cur2!=nullptr){cur2=cur2->next;lengthB++;}if(lengthA==0||lengthB==0)return nullptr;int dif=abs(lengthA-lengthB);lengthA>=lengthB? cur1=headA:cur1=headB;lengthA>=lengthB? cur2=headB:cur2=headA;while(dif>0){cur1=cur1->next;dif--;}while(cur1!=nullptr&&cur2!=nullptr){if(cur1==cur2){return cur1;}cur1=cur1->next;cur2=cur2->next;}return nullptr;}
};

142.环形链表II

leetcode题目链接
主要是如何找到入环节点的那部分的数学推导需要仔细思考一下
解题思路
解题代码
要注意fast边界条件的判断是fast和fast->next都不为空

class Solution {
public:ListNode *detectCycle(ListNode *head) {if(head==nullptr){return nullptr;}ListNode * fast=head;ListNode * slow=head;while(fast!=nullptr&&fast->next!=nullptr){fast=fast->next->next;slow=slow->next;if(fast==slow){break;}}if(fast==nullptr||fast->next==nullptr){return nullptr;}fast=head;while(fast!=slow){fast=fast->next;slow=slow->next;}return fast;}
};

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

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

相关文章

qt 实现 轮播图效果,且还有 手动 上一页和下一页 已解决

QT中有 轮播图的需求,按照正常html版本 。只需要配置数组就能搞定,但是c qt版本 应该用什么了。 第一想到的是采用定时器。 // 定时器初始化{m_pTime new QTimer(this);m_pTime->start(4 * 1000);//启动定时器并设置播放时间间隔m_pAutoFlag true;/…

TikCloud天玑云微服务技术选型

单体多机负载均衡详见:PUSDN 技术选型 平台采用Java开发语言,具有可移植性、跨平台等特性。同时,平台提供跨平台技术解决方案、Windows、MacOS、Linux多端互通,pgz-serial串口、建行POS收银等,都是基于本平台衍生的跨平台案例。 功能介绍使用技术优势/特性开发语言Java主…

数据库查询所有表和字段

查询所有表和字段 介绍 有时候可能要展示所有的表以及所有的字段,下面介绍oracle和mysql的方法以及代码 oracle sql 查询所有表 select Table_NAME from all_tables where owner 表空间 查询字段 SELECT * FROM user_tab_columns where table_name upper(表名…

【python】python turtle绘制坤坤打球

一、效果图: 二、准备工作 (1)、导入必要的模块: 代码首先导入了需要使用的模块:requests、lxml和csv。 import requests from lxml import etree import csv 如果出现模块报错 进入控制台输入:建议使用国内镜像源 p…

智慧公厕:跨界融合,打造智慧城市新名片

随着城市化进程的不断加快,公共厕所建设成为一个亟待解决的问题。传统的公厕存在着管理繁琐、卫生差、服务不到位等一系列问题,与城市发展的节奏不协调。为此,推进新型智慧公厕建设成为了一个重要的解决方案。智慧公厕的建设需要推进技术融合…

Day32 贪心算法 part02

Day32 贪心算法 part02 122.买卖股票的最佳时机 II 我的思路: 只有当后一天比前一天价格高时,才出售,profit才累加 解答: class Solution {public int maxProfit(int[] prices) {if(prices.length 0) {return 0;}int profit …

【论文精读】VIT:vision transformer论文

相关文章 【论文精读】Transformer:Attention Is All You Need 文章目录 相关文章一、文章概览(一)研究背景(二)核心思路(三)相关工作(三)文章结论 二、模型细节&#x…

数据库中什么时候使用自增id,什么时候不能使用

在数据库中,自增ID的使用场景主要有以下几个: 插入记录时不需要指定ID:使用自增ID可以避免手动指定ID,从而避免了因重复ID导致的错误数据库自动编号,速度快:数据库会按照预设的步长(默认为1&am…

【MySQL系列】优化数据库时区设置,确保数据一致性与准确性

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Neo4J导入OWL文件

1.neosemantics版本分为4.0以下和4.0以上,两者区别大,我使用的是4.0以上版本,所以参考的是以下文章 owl导入Neo4j-CSDN博客 Neo4j图数据库简介、安装、使用、导入RDF文件_rdf导入neo4j-CSDN博客 2.不同版本的有些函数是不能通用的。 比如…

图论基础|深度优先dfs、广度优先bfs

dfs 与 bfs 区别 提到深度优先搜索(dfs),就不得不说和广度优先搜索(bfs)有什么区别 先来了解dfs的过程,很多录友可能对dfs(深度优先搜索),bfs(广度优先搜索…

鸿蒙Harmony应用开发—ArkTS-@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开发中,应用会根据开发需要,封装自己的数据模型。对于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第二…

MySQL--select count(*)、count(1)、count(列名) 的区别你知道吗?

MySQL select count(*)、count(1)、count(列名) 的区别? 这里我们先给出正确结论: count(*),包含了所有的列,会计算所有的行数,在统计结果时候,不会忽略列值为空的情况。count(1),忽略所有的列…

AtCoder Beginner Contest 346

A. Adjacent Product(循环) 题意 给出 N N N个数字 A 1 , A 2 , … , A N A_1, A_2, \ldots, A_N A1​,A2​,…,AN​。定义 B i A i A i 1 ( 1 ≤ i ≤ N − 1 ) B_i A_i \times A_{i 1}(1 \le i \le N - 1) Bi​Ai​Ai1​(1≤i≤N−1)。 请你打印 B 1 , B 2 , … , B …

javase day09笔记

第九天课堂笔记 构造方法★★★★ 完成对属性赋值构造方法的名字必须与类名一致没有返回值类型public 类名(【参数】){ }构造方法在创建对象时同步执行没写无参构造,系统默认提供写了构造方法,系统不再提供构造方法:重载 引用数…

设计模式,策略模式

策略模式概述 策略模式,即与解决问题的策略有关的模式,该模式旨在更好的实现策略的实现。策略模式分为三个部分:环境、抽象策略角色、具体策略角色。策略模式能使得更好地管理和使用一类算法。 环境(context)&#xf…

【状态估计】概率论基础

《机器人学的状态估计》是入行SLAM的经典书籍之一,其中有大量的公式相关的内容,看起来还是比较艰涩的。最近重新读一遍,顺便将其中的一些内容记录下来,方便以后回看。 概率密度函数 定义 定义 x x x为区间 [ a . b ] [a.b] [a.b…

牛客NC108 最大正方形【中等 动态规划 Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/0058c4092cec44c2975e38223f10470e 思路 动态规划: 先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角参考答案Java import java.util.*;public class Solution {/*** 代码中的类…

智能新纪元:AI大模型学习的奥秘与挑战

在当前技术环境下,AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力,还需要对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法,AI大模型学习能够不断提升模型的准确性和效率,为人类生活和工作带来更多便利。…

Naive UI:一个 Vue 3 组件库,比较完整,主题可调,使用 TypeScript,快有点意思。

在当今的前端开发领域,Vue 3已成为中后台应用的首选框架。为了满足开发者的需求,各种组件库如雨后春笋般涌现。其中,Naive UI以其独特的优势,成为了Vue 3开发者的得力助手。本文将深入探讨Naive UI的特性、优势以及如何使用它来提…