自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 LEETCODE刷题-19.删除链表的倒数第N个节点

为了方便删除操作,我们可以从哑节点开始遍历 L−n+1 个节点。当遍历到第 L−n+1 个节点时,它的下一个节点就是我们需要删除的节点,这样我们只需要修改一次指针,就能完成删除操作。我们首先从头节点开始对链表进行一次遍历,得到链表的长度 L。随后我们再从头节点开始对链表进行一次遍历,当遍历到第 L−n+1 个节点时,它就是我们需要删除的节点。为了与题目中的 n 保持一致,节点的编号从 1 开始,头节点为编号 1 的节点。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2024-11-04 19:49:53 189

原创 LEETCODE刷题-25.K个一组反转链表

我们新建一个节点,把它接到链表的头部,让它作为 pre 的初始值,这样 head 前面就有了一个节点,我们就可以避开链表头部的边界条件。但是对于一个子链表,除了翻转其本身之外,还需要将子链表的头部与上一个子链表连接,以及子链表的尾部与下一个子链表连接。这个节点一开始被连接到了头节点的前面,而无论之后链表有没有翻转,它的 next 指针都会指向正确的头节点。因此,在翻转子链表的时候,我们不仅需要子链表头节点 head,还需要有 head 的上一个节点 pre,以便翻转完后把子链表再接回 pre。

2024-11-04 18:47:38 659

原创 LEETCODE刷题-92.反转链表

整体思想是:在需要反转的区间里,每遍历到一个节点,让这个新节点来到反转部分的起始位置。next:永远指向 curr 的下一个节点,循环过程中,curr 变化以后 next 会变化;pre:永远指向待反转区域的第一个节点 left 的前一个节点,在循环过程中不变。执行操作 ①:把 curr 的下一个节点指向 next 的下一个节点;执行操作 ②:把 next 的下一个节点指向 pre 的下一个节点;执行操作 ③:把 pre 的下一个节点指向 next。curr:指向待反转区域的第一个节点 left;

2024-11-04 16:33:34 281

原创 LEETCODE刷题-138.随机链表的复制

指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。个节点组成的链表来表示输入/输出中的链表。循环遍历原链表,为每个节点创建一个新的节点,并将其插入到。来存储原节点和新节点之间的映射关系,这样在复制。的链表,每个节点包含一个额外增加的随机指针。来存储原链表节点和新链表节点之间的映射关系。,该指针可以指向链表中的任何节点或空节点。新节点的值与原节点的值相同,对于每个节点,新节点的。所指向的新节点,新节点的。

2024-11-04 16:26:13 686

原创 LEETCODE刷题-21.合并两个有序链表

首先创建一个保存结果的链表,并且列表第一位设置为-1,设置两个指针指向该链表头部(一个用于最后返回结果链表,一个用于过程中扩展链表)。过程中,分别比较两个链表的数字大小,然后令保存结果的链表指向其中较小的链表,然后将该较小的链表的指针向后移动一位,然后将保存结果链表的指针向后移动一位。遍历完其中一个链表之后,将未遍历完成的链表直接接到结果链表后面即可,最后返回结果链表第二位及以后的结果(第一位为自己设定的-1,不算在结果之内)。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2024-11-04 14:21:36 163

原创 LEETCODE刷题-2.两数相加

然后同时遍历两个链表l1和l2,分别令n1和n2保存两个链表中的数(代码中运用了三位运算符,意思是:若l1不为空指针,则取n1等于l1指针指向的数,否则n1等于0,n2同理),然后令n1和n2以及carry相加,等于sum。如果保存结果的链表还未创建(*head为空指针),则创建一个新链表,使得head和tail指向新链表的第一位,同时将结果sum保存在第一位,如果保存结果的链表已经存在了,则将结果保存在结尾的下一位,同时令tail指针指向下一位。的链表,表示两个非负的整数。它们每位数字都是按照。

2024-10-31 20:31:06 589

原创 LEETCODE刷题-141.环形链表

具体地,我们可以使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。设置两个指针,一个指针一次走一步,另一个一次走两步,如果又换,则两个指针最终会重合,如果没有环,则遍历一遍之后返回flase。最容易想到的方法是遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。指针再次到达,则链表中存在环。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。,判断链表中是否有环。

2024-10-31 17:42:38 200

原创 LEETCODE刷题-224.基本计算器

如果char属于右括号“)”,则表示括号内最后一个数字已经用num保存完好且括号内计算结束,所以用ans保存括号内的计算结果,将num置零。同时将堆栈stack中的符号取出(该符号为此括号前的符号),将括号内的计算结果乘括号前的符号,再加上堆栈中保存的结果ans,至此,该括号以及括号之前的内容计算完毕。3,字符串最后一位只可能是数字或者右括号(空格不管),若最后一位是右括号,则跳出循环时num等于0,得到的ans即为最后的结果,若最后一位是数字,则将其乘数字前的符号,加到此前的ans中,得到最后的ans。

2024-10-31 17:02:59 182

原创 LEETCODE刷题-105.逆波兰表达式求值

逆波兰表达式求解严格按照从左到右的计算方式,可以利用一个栈来存储操作数,从左到右遍历表达式,遇到数字则将其存入栈中,遇到运算符则将栈中最后的两个数取出,进行运算(注意当运算符为除法时,数字的运算顺序),再将运算结果存入栈中,循环往复,遍历完成之后栈中只有最后一个数字,即为逆波兰表达式的结果。答案精妙之处在于它利用 try--except报错机制检查数组中的token是运算符还是数字,妙~啊。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。返回一个表示表达式值的整数。

2024-10-24 20:10:51 223

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除