- 博客(764)
- 收藏
- 关注
原创 leetcode:旋转链表
接下来slow和fast一起走最终slow指针下一个指向的就是倒数第K个。接下来找倒数节点就不是按照上述了。用一个新节点从开头走长度-余数步。这个题我先把他变为环形链表。然后fast指针走k步。确实别上述要少走一点。
2024-03-28 14:08:05 24
原创 leetcode:回文链表
右边头直接就是middle的next,不管奇偶,都是。现在中点在第一个3,3的next就是右半部分的头。因为考虑了奇偶长度,我开始反转的是左半部分。这道题用了之前学的求链表中点,反转链表。之前是比如1,2,3,3,2,1偶数个。其实这个你仔细想,还是反转右边方便。先找到链表中点,然后右半部分反转。稍微把求链表中点改了下。思路是一样就是写不对。
2024-03-26 20:07:53 105
原创 leetcode:相交链表
这个题有很多种解法我选的一种就是A链表,让A链表的末尾节点连到A开头,这样就构成了环形链表然后套用之前写的求环形链表第一个入口点即可/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * }
2024-03-26 11:23:39 103
原创 leetcode:环形链表II
思路就是先是快慢指针,第一次相遇后,随便一个指针重新指向开头,然后不区分快慢指针,每个指针每次走一步,第二次相遇则是环形入口。因为有可能存在没有环的情况,退出while循环。比如下方while结束后紧接着一个if。要紧接着一个if来处理这种情况。
2024-03-25 16:53:37 136
原创 leetcode:链表的中间节点
你一开始写的时候while里面,fast.next放在前面,报错,空指针。应该写在后面,对于偶数个元素的链表而言。快的到了末尾,慢的所指的就是中点。
2024-03-25 14:57:02 394
原创 leetcode:删除排序链表中的重复元素II
下一位就是4,还要继续判断4的下一位是不是也是4。对于1->2->3->3->4->4->5而言。你写的时候没有注意这一点,导致逻辑错误。应该比较fast的和fast下一个。就是我们之前写数组的删除重复元素。这道题他说只要是重复元素都删除。所以判断很多,直到选到5为止。是slow和fast比较。你判断了3下一位还是3。
2024-03-24 17:31:58 163
原创 leetcode:删除排序链表中的重复元素
最后一行slow.next = null。你不指向空的话,一整个链表全部返回了。这个代码是删除有序数组的重复元素。参考删除有序数组的重复元素。因为我们最后是返回head。
2024-03-24 15:13:31 86
原创 leetcode:排序链表
归并排序不就是不断划分,子链表合并,直到一整个链表排好序。这个可以使用归并排序,复杂度降为nlogn。我这里使用的是优先级队列。参考合并两个有序链表。
2024-03-24 14:39:55 148
原创 leetcode:合并两个有序数组
思路就是新建一个数组,对两个要排序的数组使用双指针。把没有走完的指针继续取值放到新数组即可。一个有序数组长5,一个长10。这样指针一个走完一个没走完。
2024-03-23 17:50:41 107
原创 leetcode:合并K个升序链表
最小值一定在3个链表的第一个元素中其中一个。这时候再往里面加入刚才弹出值的下一个节点。优先级定义那个a-b表示定义的是最小堆。然后进入循环里,弹出一个就是最小值。思路就是先往队列里加3个头节点。这时候在弹出一个也是最小值。
2024-03-23 16:27:09 158
原创 leetcode:删除链表的倒数第N个节点
下面findreverseNode函数是获取倒数第k个节点。p1指向开头,走k步,然后再定义一个p2指向开头。本办法的话你可以先一个for循环获取链表长度。相当于是我没有获取链表长度一样可以求出来。那么此时p2所指的就是倒数第k个节点。虚拟节点意思是为了防止空指针。如何获取倒数第K个节点?这时候p1一直走走到结尾。
2024-03-23 13:15:32 183
原创 leetcode:反转链表II
和官方思路是一样的,都是确定left左节点,right右节点。在确定要逆转链表的左右节点,之后调用之前写的反转链表代码即可。另外还有就是传参,你修改了之前反转链表函数,让其变为两个参数。就是1,2,3,4,5 left=1,right=1。另外你定义了flag变量,也不必这样。其实不必这样,切断联系即可。但有一种情况运行不通过。其他情况基本都能通过。
2024-03-22 17:04:31 100
原创 leetcode:反转链表
最后那个return就是始终返回头,以1->2->3->4->5为例。问题是,最后的你的头指向的是链表尾。也就是你没有控制头指针始终指向头。虽然你转了,也确实反转了。
2024-03-20 22:15:38 335
原创 leetcode:两数相加
第一处判断就是判断两个链表只要有一个结束了,那就结束,因为公共部分没了,需要给剩下填充0。但问题是你是直接在l1和l2链表上操作,官方是新建一个新节点,在这个新节点上添加后续的。第二处判断就是两个都结束了,万一最后一位仍然有进位,还要新建一个节点。链表值相加取余数你懂的,就是进位,存起来,给下一次相加要用。head永远指向开头,tail是负责往哪插入的。所以一个链表结束了,另一个可能还没结束。每算出来一个值添加上去即可,确实很简单。你的思路和leetcode官方一样。你看官方思路和你一样。
2024-03-20 21:03:22 173
原创 leetcode:删除链表中的节点
在2节点处值换为3,然后在该处指向4即可。也就是把3删除,当3的替身,这样2就没了。这题没有给你head节点。比如1->2->3->4。我想删除2,怎么删除?
2024-03-20 12:52:28 390
原创 leetcode:移除链表元素
slow,fast,dunny,都指向head。相等则fast移动,不相等则赋值,slow移动。其实只有一个指针再跑,dunny永远指向开头。我一开始写硬要把新定义的指针指向head。似乎写不出来,容易形成环链表。参考了数组的移除元素那道题。这个题我一开始用的双指针。dunny是为了输出用的。但其实上述定义的是三指针。
2024-03-19 15:46:35 117
原创 leetcode:移除元素
不理解了,你可以以0,0,1,target=0为例。fast前面探路,slow要保证当前之前都是好的。fast=target了,fast前进即可。=target了,赋值,slow前进。和删除有序数组中的重复项是一样的。
2024-03-14 19:13:59 306
原创 leetcode:删除有序数组中的重复项II
和I一样的,就是在I的代码上增加一个变量,这个变量用于计数是否到了2。慢指针之前包括当前永远是排好的值。通过计数变量来确定是否等于2。之后这个计数变量还要初始化。这两道题我感觉精髓在于。
2024-03-14 09:37:19 307
原创 leetcode:小于k的两数之和
不能通过start和end来找,因为要遍历完,最终start一定等于end。所以在else里面加入变量flag,你只要不进入if,一直进入else。这题其实和小于target的三数和一样的。区别在于题目中如果没找到需要返回-1。那么意味着你根本就没匹配到。
2024-03-12 23:32:43 376
原创 leetcode:有效三角形的个数
即判断nums[i]+nums[start]和nums[end]关系。如果你是从右往左,那就简单了,只有一种情况要么左移要么右移。如果非要这么写,可能比较复杂,想的比较多。那到底是右移还是左移,两种情况,不好说。这有个情况,如果前者小于等于后者。必须start右移或者end左移。我当时在写的时候i是从左往右。
2024-03-12 22:58:47 328
原创 leetcode:较小的三数和
所以5的索引是4,0的索引是1,所以4-1=3,就有3个3元组之和小于target。左指针在0处固定,右指针在5处,如果target是5。即-1 0 2,-1 0 3,-1 0 5。比如-1 0 2 3 5。那么-1+0+5=4<5。
2024-03-12 21:14:18 339
原创 C语言实现堆
堆创建用malloc,返回一个堆指针A,通过这个指针A[序列]来访问堆数据。向上调整堆的图,按照最大堆,新插入的元素的在末尾,逐一向上调整。
2023-12-06 12:43:56 388
原创 用数组构造二叉树
先定义一个数组,然后将数组转换为链表(一个for循环取数组值,设置一下next指针即可),最后根据这个链表构造二叉树(这里是通过前序遍历方法构造,你也可以根据后序遍历来构造)
2023-12-04 11:54:05 414
原创 C语言实现队列
我定义的是头节点和尾节点,每次pop一个值就pop头节点。C语言实现队列,本质还是用链表,很简单。链表基本功扎实的话,写队列不难。新加节点的话就依据尾节点。
2023-11-21 14:05:20 48
原创 初始化一个链表(升序)
这是为了解决leetcode一道题,合并两个升序链表。取出数组每一个值,一 一对链表进行赋值。比如数组1,3,5,6,7。我采用数组来初始化链表。这样,链表就是升序的了。
2023-11-20 14:24:50 41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人