代码随想录算法训练营第四天-链表part2

day2和day3回家太晚,刷完题忘记写笔记了 - -!

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

给自己的笔记:
虚拟节点法是创建一个节点,它的next指针指向链表的头节点,这样便于:

  1. current指向虚拟节点,然后对链表进行操作交换
  2. 最后返回头节点:return dummyNode.next
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):def swapPairs(self, head):""":type head: ListNode:rtype: ListNode"""#创建虚拟节点dummyNode=ListNode(next=head)#curr 指向dummyNodecurr=dummyNodewhile(curr.next and curr.next.next):#cur的下一位和下下一位都在 才会进入循环temp=curr.nexttemp1=curr.next.next.nextcurr.next=curr.next.nextcurr.next.next=temptemp.next=temp1curr=curr.next.next#curr往前2位return dummyNode.next #返回头节点

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

  1. 笨办法,先遍历所有节点获得链表长度。
class Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""#虚拟头节点dummyNode=ListNode(next=head)curr=dummyNodesizeLink=0count=0while(curr.next):sizeLink+=1curr=curr.nextx=sizeLink-ncurr=dummyNodeif(sizeLink==1):return Noneif(sizeLink==n):return head.nextwhile(curr.next):curr=curr.nextcount+=1if(count==x):curr.next=curr.next.next   return dummyNode.next
  1. 双指针法
    tips:数组也是可以这样的思路
class Solution(object):def removeNthFromEnd(self, head, n):dummyNode=ListNode(next=head)slow=dummyNodefast=slowcurr=dummyNodefor i in range(n+1):#注意是n+1,这样快指针走到尾,慢指针停在要删的节点前一个节点fast=fast.nextwhile(fast!=None):fast=fast.nextslow=slow.nextslow.next=slow.next.nextreturn dummyNode.next

面试题 02.07. 链表相交

核心思想是求两个链表长度差,让指向长链表头指针移动到,和短链表头指针对齐的位置
比如:
A: [4,1,8,4,5]
currA->4
B:[5,0,1,8,4,5]
currB->0

class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""dummyNodeA=ListNode(next=headA)currA=dummyNodeAsizeA,sizeB=0,0dummyNodeB=ListNode(next=headB)currB=dummyNodeBcurr,curr2=headA,headBwhile curr:curr=curr.nextsizeA+=1while curr2:curr2=curr2.nextsizeB+=1diff=abs(sizeA-sizeB)#长度差for i in range(diff):#让长链表指针移动到,和短链表头指针对齐的位置if sizeA>sizeB:currA=currA.nextelse:currB=currB.nextwhile currA=currB #当指针相等currA=currA.nextcurrB=currB.nextreturn currA

142.环形链表II

…待补充

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

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

相关文章

STL相关介绍及具体应用

STL的诞生 C的面向对象和泛型编程的思想目的就是提升代码复用性。为了建立数据结构和算法的一套标准,且避免重复无意义的代码工作,诞生了STL STL基本概念 1、STL(Standard Template Library)称为标准模板库 2、STL从广义上分为…

awk命令使用方法

简介 awk 是一种强大的文本处理工具,可以用于处理结构化的文本数据。它可以根据指定的模式和动作来筛选、处理和格式化文本。 下面是一些常见的 awk 命令使用方法。 详细介绍 基本语法: awk pattern { action } filename其中,pattern 是用…

微软 Power Apps Canvas App 画布应用将上传的附件转化为base64编码操作

微软 Power Apps Canvas App 画布应用将上传的附件结合Power Automate转化为base64编码操作 在使用canvas app的过程中,我们有时需要将上传的文件转换为base64存入数据库或者,调用外部接口传参,那么看下如何将文件转化为base64编码格式。 首先…

【数据分析】numpy基础第三天

前言 本文只会讲解最常用的加、减、乘、除,点乘(或叫矩阵乘法)、还有广播机制。 本文代码 链接提取码:1024 第1部分:基础数学计算 使用NumPy进行基本的数学运算是十分直观和简单的。下面我们将展示一些基本的加、…

笨蛋总结JVM

笨蛋总结JVM 由于Java语言将自己的内存控制权交给了虚拟机,所以需要了解虚拟机的运行机制 (主要用于回顾JVM) 笨蛋总结JVM 笨蛋总结JVM1.运行时数据区域线程私有区域程序计数器Java虚拟机栈本地方法栈 线程共享区域堆方法区 1.2程序计数器…

SQL编程作业

题目: 创建职工表以及职工工资表 职工表字段:工号,姓名,性别,年龄 工资表字段:编号自增,职工工号,基础工资10000 通过触发器实现: 对职工进行添加时 工资表中也要体现当…

键盘上Ins键的作用

前几天编写文档时,发现一个问题:插入内容时,输入的字符将会覆盖光标位置后的字符。原来是按到了键盘上的 Ins键,解决方法是:再按一次 Ins键(Ins键如果独立作为一键时,否则使用 “Fn Ins”组合键…

PHP雪花算法

雪花算法(Snowflake Algorithm)是一种分布式唯一ID生成算法,旨在满足分布式系统中对唯一标识的需求。它由Twitter公司的工程师Snowman(Snowflake的创造者)设计,用于生成全局唯一的ID,以应对分布…

并查集的学习

并查集可以理解为数学上的集合 并查集一般以树这种数据结构来储存每一个元素,判断两个元素是否为同一个集合,通常判断两个元素所在的树的根结点是否相同,因为比较两个元素是否是同一个树要向上查找根结点,所以一般用双亲表示法&a…

Sphinx的原理详解和使用

一、Sphinx介绍 1.1 简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也…

限时回归!!!3D版《空洞骑士》!!!

空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏。庞大的游戏世界交错相通,玩家控制小虫子去探索幽深黑暗的洞穴,成为了一代人茶余饭后的惦念,深受广大玩家们的喜爱。 这类平台跳跃游戏一般是游戏开发初学者以及独立游戏开发者们比…

【DRAM存储器十八】DDR3介绍

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光DDR3数据手册》 、《JESD79-3E》 最近忙于工作&#xff0…

Linux使用匿名管道实现进程池得以高效通信

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Nonsense—Sabrina Carpenter 0:50━━━━━━️💟──────── 2:43 🔄 ◀️ ⏸ ▶️ …

python基础四------完结(概念在下面,代码看不懂了再看)

# a_list [1,2,3,4,5] # # print(a_list)# 根据下标来删除列表中的元素 # 爬取的数据中 有个别的数据 是我们不想要的 那么我们就可以通过下标的方式来删除 # del a_list[2] # print(a_list)# b_list [1,2,3,4,5] # print(b_list) # pop是删除列表中的最后一个元素 # b_list.…

stack Error: EACCES: permission denied

报错 stack Error: EACCES: permission denied解决 npm install webpack --save-dev --unsafe-perm参考 npm报错stack Error: EACCES: permission denied, mkdir

Kali 基本命令大全

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

蓝桥杯-岛屿个数-bfs-dfs算法

小蓝得到了一副大小为 M N 的格子地图,可以将其视作一个只包含字符‘0’(代表海水)和 ‘1’(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右四个方向上相邻的 ‘1’…

AP5216 平均电流型LED降压恒流驱动IC 手电筒汽车摩托车灯芯片

产品描述 AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管,适用于5V~100V输入的高精度降压 LED 恒流驱动芯片。输出最大功率可达9W,最大电流 1.0A。AP5216 可实现全亮/半亮功能切换,通过MODE 切换:全亮/半亮…

SAP HANA 报错信息,如何根据报错关键词去进行处理

HANA建模其实上手会比较快,基本会SQL就可以进行开发。 在实际开发中,难点一个是建模思路,另外一个则是建模中报错的处理。 现在将HANA中报错进行一个整理,这里的并不是完整的报错信息,大家可以根据关键词进行查看。 …

ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口;向量数据库的挑战和未来

🦉 AI新闻 🚀 ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口 摘要:OpenAI在ChatGPT中引入了一个新功能,允许用户在聊天时任意一个GPTs(即ChatGPT最新推出的AI Agent 智能应用…