- 博客(11)
- 收藏
- 关注
转载 1.11判断两个无环单链表是否相交
判断两个无环单链表是否交叉 题目描述: 如上图,这两个链表相交于结点5,要求判断两个链表是否相交,如果相交,找出相交处的结点。 解题思路: 方法一:Hash 法 如上图所示,如果两个链表相交,那么它们一定会有公共的结点,由于结点的地址或引用可以作为结点的唯一标识,因此,可以通过判断两个链表中的结点是否有相同的地址或引用来判断链表是否相交。 方法二:首尾相接法 将这两个链表首尾相连(例如...
2019-09-07 23:51:00 266
转载 1.10给定特定节点指针要求删除该节点
只给单链表中要某节点处的指针的情况下删除该节点 题目描述: 假设给定链表 1->2->3->4->5->6->7 中指向第5个元素的指针,要求把结点5删掉,删除后链表变为1->2->3->4->6->7 思路分析: 1.如果这个结点是链表的最后一个结点,那么无法删除这个结点。 2.如果这个结点不是链表的最后一个结点,可以通过把其...
2019-09-07 20:35:00 224
转载 1.9合并两个有序链表
合并两个有序链表 解题思想: 分别用l1,l2遍历两个链表,如果l1.data小于l2.data,则将l1归入合并后的链表,l1=l1.next;反之将l2归入合并后的链表,l2=l2.next;如果其中一个链表遍历结束,则将没遍历完的另一链表的剩下部分归入合并后的链表 代码实现: # -*-coding:utf-8-*- """ @Author : 图南 @Software: Py...
2019-09-07 14:52:00 103
转载 1.8单链表以k个节点为一组翻转
单链表以k个节点为一组进行翻转 解题思路: 首先把前K个结点看成一个子链表,采用前面介绍的方法进行翻转,把翻转后的子链表链接到头结点后面,然后把接下来的K个结点看成另外一个单独的链表进行翻转,把翻转后的子链表链接到上一个已经完成翻转子链表的后面 图示: 代码实现 # -*-coding:utf-8-*- """ @Author : 图南 @Software: PyCharm @Ti...
2019-09-07 14:21:00 194
转载 1.7交换链表中的相邻节点
交换链表中的相邻节点 题目描述: 把链表相邻元素翻转,例如给定链表为1——>2一>3一>4一>5——>6一>7,则翻转后的链表变为2一>1一>4一>3一>6一>5一>7 解题思路: 就地逆序法: 通过调整结点指针域的指向来直接调换相邻的两个结点。如果单链表恰好有偶数个结点,那么只需要将奇偶结点对调即可,如果链表有奇数个结点,那么只需要将除最后一个结点外的其它结点进行奇偶对调即...
2019-09-07 11:32:00 556
转载 1.6带环单链表
检测单链表中是否有环 方法一:蛮力法 定义一个集合用来存放结点的引用,并将其初始化为空,从链表的头结点开始向后遍历,每遍历到一个结点就判断集合中是否有这个结点的引用,如果没有,说明这个结点是第一次访问,还没有形成环,那么将这个结点的引用添加到集合中去。如果在集合中找到了同样的结点,那么说明这个结点已经被访问过了,于是就形成了环。这种方法的时间复杂度为O(n),空间复杂度也为O(n)。 方...
2019-09-06 18:31:00 150
转载 1.5寻找倒数第k个元素
寻找倒数第k个元素 方法一: 将单链表逆置,变换成寻找正数第k个元素 方法二: 快慢指针法,快指针比慢指针快k个节点,当快指针到达尾节点时,慢指针为倒数第k个节点 方法三: 顺序遍历两次链表法,第一次遍历求出链表长度n,将寻找倒数第k个元素转换成寻找正数第n-k个元素 代码实现方法二: # -*-coding:utf-8-*- """ @Author : 图南 @Software: ...
2019-09-06 15:08:00 137
转载 1.4链表重排序
链表重排序 题目描述: 给定链表 Lo一>L1一>L2… Ln-1一>Ln,把链表重新排序为 Lo >Ln一>L1一>Ln-1->L2一> Ln-2…。要求:(l)在原来链表的基础上进行排序,即不能申请新的结点;(2)只能修改结点的 next 域,不能修改数据域。 解题思路: 找出链表的中间节点,分成前后两个链表(可使用快慢指针法) 对后半部分链表进行逆序 按照题目要求合并...
2019-09-05 17:53:00 171
转载 1.3如何计算两个单链表代表的数之和
问题描述 给定两个单链表,链表的每个结点代表一位数,计算两个数的和。例如 :输入链表 (3一>1一> 5)和链表(5一>9一> 2),输出 :8->0->8,即 513+295 =808,注意个位数在链表头。 class Node: def __init__(self, data=None, next=None): self.data = data ...
2019-09-04 12:43:00 195
转载 1.2从链表中移除重复项
无序链表移除重复项 # -*-coding:utf-8-*- class Node: def __init__(self, data=None, next=None): self.data = data self.next = next def print_link(head): cur = head.next while cu...
2019-09-04 12:38:00 83
转载 1.1链表逆序
链表逆序 有头结点的链表逆序 # -*-coding:utf-8-*- # 有头结点的链表逆序 class Node: def __init__(self, data=None, next=None): self.data = data self.next = next def print_link(head): cur = head....
2019-09-04 12:33:00 102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人