LeetCode---【链表的操作】

目录

  • 206反转链表【链表结构基础】
  • 21合并两个有序链表【递归】
    • 我的答案【错误】
    • 自己修改【超出时间限制】
    • 在官方那里学到的【然后自己复写,错误】
    • 对照官方【自己修改】
  • 160相交链表【未理解题目目的】
    • 在b站up那里学到的【然后自己复写,错误】
    • 【超出时间限制】
    • 对照官方【自己修改】
  • 19删除链表的倒数第 N 个结点
    • 看完官方解题思路【自己复写,错误】
    • 报错信息
    • 第一遍修改
    • 第二遍修改
  • 148排序链表
  • 我的答案【冒泡排序:最小的负数输出时变为0】
    • 官方答案【归并排序】

206反转链表【链表结构基础】

  • 设定一个前结点和后结点。
class Solution(object):def reverseList(self, head):""":type head: ListNode:rtype: ListNode"""pre=Nonecur=headwhile cur!=None:temp=cur.nextcur.next=prepre=curcur=tempreturn pre

21合并两个有序链表【递归】

我的答案【错误】

class Solution(object):def mergeTwoLists(self, list1, list2):""":type list1: Optional[ListNode]:type list2: Optional[ListNode]:rtype: Optional[ListNode]"""resol=ListNode()while list1!=None and list2!=None:if list1.val<=list2.val:resol.next=ListNode(list1.val)else:resol.next=ListNode(list2.val)list1=list1.nextlist2=list2.nextwhile list1!=None:resol.next=ListNode(list1.val)while list2!=None:resol.next=ListNode(list2.val)return resol.next

自己修改【超出时间限制】

class Solution(object):def mergeTwoLists(self, list1, list2):""":type list1: Optional[ListNode]:type list2: Optional[ListNode]:rtype: Optional[ListNode]"""resol=ListNode(0)temp=resolwhile list1 and list2:if list1.val<=list2.val:resol.next=list1list1=list1.next################else:resol.next=list2list2=list2.next################resol=resol.next######################其实是不断增加结点的过程,所以记得更新while list1:resol.next=list1while list2:resol.next=list2return temp.next

在官方那里学到的【然后自己复写,错误】

class Solution(object):def mergeTwoLists(self, list1, list2):""":type list1: Optional[ListNode]:type list2: Optional[ListNode]:rtype: Optional[ListNode]"""if list1 is None:return list2elif list2 is None:return list1else:if list1.val<list2.val:list1.next=mergeTwoLists(self,list1.next,list2)###如果只改mergeTwoLists(self,list1.next,list2)也是可以编译通过的,运行成功,else这里的逻辑也可以修正一下return list1else:list2.next=mergeTwoLists(self,list2.next,list1)return list2

对照官方【自己修改】

class Solution(object):def mergeTwoLists(self, list1, list2):""":type list1: Optional[ListNode]:type list2: Optional[ListNode]:rtype: Optional[ListNode]"""if list1 is None:return list2elif list2 is None:return list1elif list1.val<list2.val:list1.next=self.mergeTwoLists(list1.next,list2)########函数的调用return list1else:list2.next=self.mergeTwoLists(list2.next,list1)########函数的调用return list2

160相交链表【未理解题目目的】

  • 我看输入部分都已经给了要输出的结果了,就不明白这题目的是要做什么。

在b站up那里学到的【然后自己复写,错误】

class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""p=headA,q=headBwhile(p!=q):p ? p.next : headBq ? q.next : headAprint("p.val")

【超出时间限制】

class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""p=headAq=headBwhile(p!=q):if p.next !=None:p=p.nextelse:p=headBif q.next!=None:q=q.nextelse:q=headAreturn p

对照官方【自己修改】

class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""p=headA ####p,q=headA,headB这样可以q=headB ####p=headA,q=headB会报错while(p!=q):p = p.next if p else headBq = q.next if q else headAreturn p

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

看完官方解题思路【自己复写,错误】

class Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""p=headfor i in range(n+1):p=p.nextq=headwhile p!=None:q=q.nextp=p.next###########【这里不能少啊!】q.next=q.next.nextreturn head

报错信息

在这里插入图片描述

  • 查阅资料后发现:【self.head是指向第一个元素的,此时为None,所以没有next属性,自然就会报错。因此第一个结点需要特殊处理,我们一般通过增加头结点的方式来避免这种特殊处理。

第一遍修改

  • 发现当链表有n个元素时,无法删除倒数第n个元素。
  • 【没有考虑到第一个结点的特殊性。】
class Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""p=ListNode(0, head)#################for i in range(n+1):p=p.nextq=ListNode(0, head)#################while p!=None:q=q.nextp=p.nextq.next=q.next.next#########无法删除倒数第n个元素return head

第二遍修改

class Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""dummy=ListNode(0, head)p=dummyfor i in range(n+1):p=p.nextq=dummywhile p!=None:q=q.nextp=p.nextq.next=q.next.nextreturn dummy.next 

148排序链表

我的答案【冒泡排序:最小的负数输出时变为0】

class Solution(object):def sortList(self, head):""":type head: ListNode:rtype: ListNode"""dummy=ListNode(0,head)q=dummywhile q.next!=None:p=dummywhile p.next!=None:if p.val>p.next.val:temp=p.valp.val=p.next.valp.next.val=tempp=p.nextq=q.nextreturn dummy.next

在这里插入图片描述

官方答案【归并排序】

class Solution(object):def sortList(self, head):def sortFunc(head, tail):if not head:return headif head.next == tail:head.next = Nonereturn headslow = fast = headwhile fast != tail:slow = slow.nextfast = fast.nextif fast != tail:fast = fast.nextmid = slowreturn merge(sortFunc(head, mid), sortFunc(mid, tail))######合并两个升序链表,但是长度差最多为1    def merge(head1, head2):dummyHead = ListNode(0)temp, temp1, temp2 = dummyHead, head1, head2while temp1 and temp2:if temp1.val <= temp2.val:temp.next = temp1temp1 = temp1.nextelse:temp.next = temp2temp2 = temp2.nexttemp = temp.nextif temp1:temp.next = temp1elif temp2:temp.next = temp2return dummyHead.nextreturn sortFunc(head, None)

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

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

相关文章

(C语言)qsort函数模拟实现

前言 我们需先了解qsort函数 qsort函数详解&#xff1a;http://t.csdnimg.cn/rTNv9 qsort函数可以排序多种数据类型&#xff0c;很是神奇&#xff0c;这是为什么&#xff0c;我们在里模拟实现这样的功能 目录 1. qsort函数模拟实现 2. 我们使用bubble_sort函数排序整形数…

Sunshine v0.21.0 安装卡住,闪退的问题解决

上期博客讲了如何利用 Sunshine 和 Moonlight 实现 iPad 当作 Windows 副屏&#xff0c;用官方 Windows installer 安装 Sunshine 过程中&#xff0c;遇到了安装卡住&#xff08;这个是因为需要国外网络环境&#xff09;&#xff0c;安装后运行闪退的问题。 Sunshine 下载地址…

OpenCV 4基础篇| OpenCV图像的裁切

目录 1. Numpy切片1.1 注意事项1.2 代码示例 2. cv2.selectROI()2.1 语法结构2.2 注意事项2.3 代码示例 3. Pillow.crop3.1 语法结构3.2 注意事项3.3 代码示例 4. 扩展示例&#xff1a;单张大图裁切成多张小图5. 总结 1. Numpy切片 语法结构&#xff1a; retval img[y:yh, x…

以目标检测和分类任务为例理解One-Hot Code

在目标检测和分类任务中&#xff0c;每一个类别都需要一个编码来表示&#xff0c;同时&#xff0c;这个编码会用来计算网络的loss。比如有猫&#xff0c;狗&#xff0c;猪三种动物&#xff0c;这三种动物相互独立&#xff0c;在分类中&#xff0c;将其中任意一种分类为其他都同…

YOLOv9独家原创改进|使用可改变核卷积AKConv改进RepNCSPELAN4

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 AKConv是一种具有任意数量的参数和任意采样形状的可变卷积核&#xff0c;对不规则特征有更好的提取效果。 RepNCSPELAN4是YOLOv9中的…

2023年12月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

一、单选题(共15题,共30分) 第1题 现代计算机是指电子计算机,它所基于的是( )体系结构。 A:艾伦图灵 B:冯诺依曼 C:阿塔纳索夫 D:埃克特-莫克利 答案:B 第2题 默认小猫角色,执行下列程序,以下说法正确的是? ( ) A:舞台上会出现无数个小猫 B:舞台只会出现…

java spring 02. AbstractApplicationContext

spring创建对象的顺序&#xff0c;先创建beanfactory&#xff0c;再会把xml文件读取到spring。 public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {//调用父类的构造方法super(p…

Redis常用指令,jedis与持久化

1.redis常用指令 第一个是key的常用指令&#xff0c;第二个是数据库的常用指令 前面的那些指令都是针对某一个数据类型操作的&#xff0c;现在的都是对所有的操作的 1.key常用指令 key应该设计哪些操作 key是一个字符串&#xff0c;通过key获取redis中保存的数据 对于key…

flink重温笔记(九):Flink 高级 API 开发——flink 四大基石之WaterMark(Time为核心)

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 9 天啦&#xff01;学习了 flink 四大基石之 Time的应用—> Watermark&#xff08;水印&#xff0c;也称水位线&#xff09;&#xff0c;主要是解决数据由于网络延迟问题&#xff0c;出现数据乱序或者迟到数据现象&…

通过大语言模型理解运维故障:评估和总结

张圣林 南开大学软件学院副教授、博士生导师 第六届CCF国际AIOps挑战赛程序委员会主席 在ATC、WWW、VLDB、KDD、SIGMETRICS等国际会议和JSAC、TC、TSC等国际期刊发表高水平论文50余篇。主持国家自然科学基金项目2项&#xff0c;横向项目13项&#xff08;与华为、字节跳动、腾讯…

Sqli-labs靶场第20关详解[Sqli-labs-less-20]自动化注入-SQLmap工具注入

Sqli-labs-Less-20 通过测试发现&#xff0c;在登录界面没有注入点&#xff0c;通过已知账号密码admin&#xff0c;admin进行登录发现&#xff1a; 登录后会有记录 Cookie 值 设想如果在Cookie尝试加上注入语句&#xff08;报错注入&#xff09;&#xff0c;测试是否会执行…

C++STL之vector

vector 1. vector介绍 vector文档vector其实就是一个顺序表&#xff0c;它表示可变大小数组的序列容器。像数组一样&#xff0c;可以使用下标[] 来访问vector的元素&#xff0c;和数组一样高效&#xff1b;甚至&#xff0c;它的大小是可以动态改变的&#xff0c;其大小由容器自…

软考55-上午题-【数据库】-数据库设计步骤1

一、数据库设计的步骤 新奥尔良法&#xff0c;四个主要阶段&#xff1a; 1、用户需求分析&#xff1a;手机用户需求&#xff0c;确定系统边界&#xff1b; 2、概念设计&#xff08;概念结构设计&#xff09;&#xff1a;是抽象概念模型&#xff0c;较理想的是采用E-R方法。 …

代码随想录算法训练营第七天

● 自己看到题目的第一想法 第454题.四数相加II 方法&#xff1a; 方法一&#xff1a; 暴力法 思路&#xff1a; 注意&#xff1a; 代码&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<i…

QT 网络编程 8

1 基础知识 udp tcp 2 UDP 框架 客户端: QUdpSocket x; qint64 writeDatagram( const char *data, qint64 size, const QHostAddress &address, quint16 port );服务器: void Server::initSocket(){udpSocket new QUdpSocket(this);udpSocket->bind(QHostAddress…

macos jupyter notebook字体的修改

终端codemirror 记事本打开 搜索font-family 修改font-size保存即可

重学SpringBoot3-@ConditionalOnXxx条件注解

重学SpringBoot3-ConditionalOnXxx条件注解 引言常见的条件注解常见的条件注解示例扩展条件注解1. ConditionalOnJndi2. ConditionalOnJava3. ConditionalOnCloudPlatform4. ConditionalOnEnabledResourceChain5. 自定义条件注解 总结 引言 Spring Boot 提供了一组强大的条件注…

ERDAS监督分类与温度反演教程

本期带来监督分类教程&#xff0c;更多内容&#xff0c;欢迎关注小编的公众号梧桐凉月哦&#xff01;&#xff01;&#xff01; 一、研究区自然、地理环境特征&#xff1a; 1、景德镇市位于中国江西省东北部&#xff0c;地处赣江中游的赣北盆地&#xff0c;地形地貌以丘陵和低…

mitmproxy代理

文章目录 mitmproxy1. 网络代理2. 安装3. Https请求3.1 启动mitmproxy3.2 获取证书3.3 配置代理3.4 运行测试 4. 请求4.1 读取请求4.2 修改请求4.3 拦截请求 5. 响应5.1 读取响应5.2 修改响应 6. 案例&#xff1a;共享账号6.1 登录bilibili获取cookies6.2 在代理请求中设置cook…

ER-NeRF实时对话数字人模型训练与部署

ER-NeRF是基于NeRF用于生成数字人的方法&#xff0c;可以达到实时生成的效果。 下载源码 cd D:\Projects\ git clone https://github.com/Fictionarry/ER-NeRF cd D:\Projects\ER-NeRF 下载模型 准备面部解析模型 wget https://github.com/YudongGuo/AD-NeRF/blob/master/…