
链表
链表
咕噜咕噜day
day day up!
展开
-
链表的奇偶重排
链表的奇偶重排,python实现原创 2022-06-19 23:15:09 · 147 阅读 · 0 评论 -
删除有序链表中重复的元素-2
删除有序链表中重复的元素,python原创 2022-06-19 23:00:01 · 176 阅读 · 0 评论 -
删除有序链表中重复的元素-1
删除有序链表中重复的元素,python实现原创 2022-06-19 22:49:23 · 122 阅读 · 0 评论 -
判断一个链表是否为回文结构
判断链表是否是回文结构,python实现原创 2022-06-19 22:22:17 · 136 阅读 · 0 评论 -
单链表的排序,分治法
单链表的排序,python原创 2022-06-19 22:09:56 · 235 阅读 · 0 评论 -
链表相加(二)
链表相加,python实现原创 2022-06-19 21:41:56 · 187 阅读 · 0 评论 -
删除链表的倒数第n个节点
删除链表的倒数第n个节点,python实现原创 2022-06-19 00:19:04 · 117 阅读 · 0 评论 -
找到带环链表环入口的节点
链表环入口的节点,python实现原创 2022-06-18 22:06:08 · 135 阅读 · 0 评论 -
剑指offer【36】:二叉搜索树与双向链表
题目:思路+代码:class Solution: # 思路:二叉搜索树中序遍历才是递增,又因为要求是双向链表,cur.left= self.pre; self.pre.right=cur # 特例:如果root不存在,return # 初始化self.pre=None # 递归调用中序遍历,构建除首尾两个节点之外的双向链表; # 中序遍历递归结束后,设置head.left = pre; pre.right=head,构成循环链表原创 2020-06-29 21:04:53 · 317 阅读 · 0 评论 -
剑指offer【35】:复杂链表的复制
题目:思路+代码:# 思路:递归dfs, 初始化dict:{node: copy_node}; # 递归结束条件:当前节点none或者节点已经存在则return dict# 当前层递归:根据head值,建立节点; node.next和node.random递归建立;# 返回值:return 当前层节点(此时节点已经建成class Solution: def copyRandomList(self, head: 'Node') -&原创 2020-07-07 15:29:18 · 201 阅读 · 0 评论 -
剑指offer【52】:两个链表的第一个公共节点
题目:思路+代码:class Solution: # 思路:首先知道因为可能存在不是交点的同val且同next的节点,所以不能只是根据节点是否相同判断,下面代码方法意思是只有在同一时刻,同val且同next才是交点 def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: if not headA or not headB: ret.原创 2020-05-22 01:39:39 · 199 阅读 · 0 评论 -
剑指offer【18】: 删除链表的节点
题目:思路+代码:class Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: # 思路:遍历链表如果值相等则pre.next = cur.next,因为就一个值,循环结束 if not head: return if val == None: return head .原创 2020-05-22 01:19:43 · 100 阅读 · 0 评论 -
剑指offer【25】: 合并两个排序的链表
题目:思路+代码:class Solution: # 思路: 1.当l1和l2同时存在时,初始化合成新链表的空指针,通过逐个判断l1和l2的大小,同时移动指针指向较小的节点 2.当有一个链表为空时,将另一个链表连接在指针下面 def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: cur = dummy = ListNode(.原创 2020-05-22 00:31:50 · 262 阅读 · 0 评论 -
剑指向offer【22】:返回链表中倒数第k个节点
找到链表第k个思路+代码:class Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: # 递归 # 思路类型下面只是把while循环改成了递归: 1.定义一个快慢指针,初始化快指针在慢指针前面第k个节点 2.递归往后走直到走到快指针的下一个为空,返回此时的慢指针 if not head..原创 2020-05-21 21:59:40 · 168 阅读 · 0 评论 -
【leedcode.25:Reverse Nodes in k-Group】 每k个节点反转_递归非递归4种解法
题目:解法一:递归改变节点连接 思路:1.采用分治思想,从后往前递归,调用递归函数传进去下一个k部分的头结点和k,递归结束是节点为空,此时count 不为0,递归返回最后这部分(不管是否满k个节点)的头结点; 2.反转操作是从后往前,倒数第二部分head指向最后一部分head(递归返回),依次在倒数第二部分进行k次反转,return head(反转后的head)class Solution: def revers...原创 2020-05-12 14:53:25 · 349 阅读 · 0 评论 -
【leedcode.92】Reverse Linked List II 递归解法和非递归解法
题目:解法一:递归代码:class Solution: def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: # 递归:核心思想是链表无后指针所以需要利用递归进行回溯,同时交换值,实现反转 if not head: ......原创 2020-05-08 01:11:35 · 243 阅读 · 0 评论 -
【leedcode.141】判断链表是否有环,递归非递归三种解法
法一:借助辅助空间代码:class Solution: def hasCycle(self, head: ListNode) -> bool: a = set() while head: if head in a: return True ...原创 2020-05-05 12:59:16 · 395 阅读 · 0 评论 -
【leedcode.24】两两交换链表中的节点,递归和非递归解法
解题思路非递归1.首先两两交换想到用三个指针;2.使用self可以省掉头结点的声明3.只有当一组两个节点同时存在才进行交换操作4.交换位置,以b为核心,更新三根指针5.最后返回头结点代码:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# ...原创 2020-05-05 01:14:06 · 165 阅读 · 0 评论 -
【leedcode.206】反转链表递归和非递归举例详解
**递归**# 经典的代码贴上def reverse_list(self, head): if not head or not head.next: # not head 是为了防止空列表; return head newH = self.reverse_list(head.next) # 一直为5,因为是新链表表头 head.next....原创 2020-05-04 22:20:54 · 188 阅读 · 0 评论