![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
996冲冲冲
这个作者很懒,什么都没留下…
展开
-
leetcode27. 移除元素
【代码】leetcode27. 移除元素。原创 2022-10-18 22:29:52 · 80 阅读 · 0 评论 -
leetcode641. 设计循环双端队列
【代码】leetcode641. 设计循环双端队列。原创 2022-10-18 21:01:18 · 42 阅读 · 0 评论 -
leetcode622. 设计循环队列
了解循环队列的性质和判空判满的条件,之后根据链表实现就很简单了。原创 2022-10-18 10:19:54 · 72 阅读 · 0 评论 -
leetcode430. 扁平化多级双向链表
不跨的对比,这样p会再次遍历子链表,last也会随着p一步步更新,就不用last= child_l这句了。原创 2022-10-17 16:47:47 · 86 阅读 · 0 评论 -
leetcode817. 链表组件
【代码】leetcode817. 链表组件。原创 2022-10-16 21:46:59 · 118 阅读 · 0 评论 -
leetcode725. 分隔链表
【代码】leetcode725. 分隔链表。原创 2022-10-16 21:11:27 · 74 阅读 · 0 评论 -
leetcode384. 打乱数组
Knuth洗牌算法,牛。原创 2022-10-15 15:43:04 · 55 阅读 · 0 评论 -
leetcode328. 奇偶链表
分成奇偶两段链表,然后一个连奇数节点一个连偶数节点最后奇数链表连上偶数节点。主要注意一下循环的终止条件,画图分奇偶看一下就行。原创 2022-10-13 17:19:51 · 102 阅读 · 0 评论 -
leetcode61. 旋转链表
之后找到倒数第k个前面的那个节点与后面的断开。然后k如果大于链表长度的话就取余。思路就是统计一下链表的长度。把后面的接到头节点上完成。原创 2022-10-13 15:30:07 · 100 阅读 · 0 评论 -
leetcode234. 回文链表
空间复杂度不为常数的做法,把链表变成数组,可以访问下标,这样就可以通过下标来判断了。反转之后在一一的和链表的前半段对比,看是否满足回文。需要注意的是分奇偶情况,要使前半部分链表比后半部分长。思路是先找到链表的中点然后将链表的后半部分反转。原创 2022-10-12 22:13:04 · 82 阅读 · 0 评论 -
leetcode143. 重排链表
重排链表,主要思路是因为后面的一段是从后向前的,所以考虑先把后面的断开反转,然后再合并。原创 2022-10-12 20:23:02 · 103 阅读 · 0 评论 -
leetcode237. 删除链表中的节点
我们知道它后面的节点,我们把它自己变为它后面的节点,再把后面的那个节点删了。这样就相当于删除了自己。原创 2022-10-12 16:59:50 · 62 阅读 · 0 评论 -
leetcode138. 复制带随机指针的链表
使用哈希表一一对应每个节点。原创 2022-10-12 11:31:29 · 33 阅读 · 0 评论 -
leetcode82. 删除排序链表中的重复元素 II
慢慢入门了,遇到有的中等可以10分钟内秒了。但是还是很多没有思路或者思路不对,路漫漫其修远兮,吾将上下而求索。原创 2022-10-11 21:41:33 · 54 阅读 · 0 评论 -
leetcode445. 两数相加 II
高位到低位相加,这样不符合常理所以做题前先仔细思考思路,别拿到就做。这样多位进位时gg。借用栈先存储节点的值,再根据值重新建个链表。原创 2022-10-11 19:23:06 · 46 阅读 · 0 评论 -
leetcode203. 移除链表元素
【代码】leetcode203. 移除链表元素。原创 2022-10-11 10:29:55 · 35 阅读 · 0 评论 -
leetcode25. K 个一组翻转链表
【代码】leetcode25. K 个一组翻转链表。原创 2022-10-10 21:56:50 · 38 阅读 · 0 评论 -
LC206,JZ24 反转链表
借用栈class Solution: # 返回ListNode def ReverseList(self, pHead): # write code here array = [] while pHead: array.append(pHead.val) pHead=pHead.next node = ListNode(0) x = node wh原创 2021-05-26 16:07:08 · 83 阅读 · 0 评论 -
leetcode24. 两两交换链表中的节点
【代码】leetcode24. 两两交换链表中的节点。原创 2022-10-10 15:48:29 · 85 阅读 · 0 评论 -
leetcode2. 两数相加
超过了需要进一,也就是在下一步更高位时加上carry就好。注意由于是在后面再进一的,所以完成所有遍历后也要在考虑一边需不需要进位。因为是倒序,所以先从末尾节点开始,不用补全,用一个标记位记录前一位数相加是否超过了10。原创 2022-10-09 21:53:57 · 46 阅读 · 0 评论 -
leetcode160. 相交链表
用哈希表存储链表,注意这里存的是整条链表,所以可以判断如果某个节点开始后面的完全一样说明是相交。双指针,这样相当于进行拼接,会同时走到相交节点,没有相交节点的话会走到同时为空。原创 2022-10-09 17:31:10 · 32 阅读 · 0 评论 -
leetcode142. 环形链表 II
所以从头节点出发和相遇节点出发都要走k-m才能到环的起始节点,且这时刚好两者相遇。假设相遇点距离 环的起始节点为m,那么链表头节点到环的起始节点就是k-m。找环形链表的起点,假设在相遇点时慢指针走了k,则快指针走了2k。又因为快指针走了k到达相遇节点,那么走k-m也到了环的起始节点。慢指针从起点到相遇点为k,快指针也是,也就是。则说明k是环长度的n倍。原创 2022-10-09 15:53:24 · 60 阅读 · 0 评论 -
leetcode141. 环形链表
快慢指针,如果相遇了说明有环,遍历完没相遇就没环。注意while循环的条件。原创 2022-10-08 21:33:32 · 31 阅读 · 0 评论 -
leetcode876. 链表的中间结点
双指针,快的移两步,慢的移一步。这样要分情况,奇数的时候快的到末尾节点,慢的在中间。偶数时因为要返回后面的一个。所以条件是当前节点不为空(偶数)或者下一个节点不为空(奇数)原创 2022-10-08 21:11:52 · 38 阅读 · 0 评论 -
leetcode19. 删除链表的倒数第 N 个结点
【代码】leetcode19. 删除链表的倒数第 N 个结点。原创 2022-10-08 20:08:37 · 68 阅读 · 0 评论 -
leetcode23. 合并K个升序链表
多个链表不知道哪个最小,可以使用优先级队列,链接一个最小的之后再继续将最小的链表的下一个节点加入对队列。所以这里采用链表的下标来记录是哪一条链表。原创 2022-10-08 16:51:26 · 40 阅读 · 0 评论 -
leetcode86. 分隔链表
将一条链表分割为大于x和小于x的两部分,可以借助两个哑节点实现,注意可能会存在环的问题和要记录大于的起始位置用于连接和小于的起始位置用于返回结果。原创 2022-10-08 09:43:53 · 74 阅读 · 0 评论 -
leetcode92. 反转链表 II
class Solution(object):def reverseBetween(self, head, left, right):tmp = ListNode(0)tmp.next = headpre = tmpfor i in range(left-1):pre = pre.nextright_node = pre #leftfor i in range(right - left + 1):right_node =right_node.nextleft_node = pre.nex原创 2022-03-10 21:52:38 · 253 阅读 · 0 评论