
链表
一叶知秋的BLOG
没有过不去的黑夜,也没有等不到的明天。乾坤未定,你我皆是黑马。
展开
-
python 反转链表
反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL提供两种解题思路# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# se原创 2021-12-19 08:00:00 · 530 阅读 · 0 评论 -
python 从尾到头打印链表
从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]提供三种题解# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: """ 解原创 2021-12-17 08:00:00 · 395 阅读 · 0 评论 -
顺序表和链表的优缺点详解
一、什么是线性表线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即把所有数据用一根线串起来,再存储到物理空间中。将具有一对一关系的数据线性地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)二、顺序存储结构和链式存储结构图 3 中我们可以看出,线性表存储数据可细分为以下 2 种:如图 3a) 所示,将数据依次存储在连续的整块物理空间中,这种存储结构称为顺序存储结构(简称顺序表);如图 3b) 所示,数据分散的存储在物理空间中,通过一根线保存着它们之间的逻辑关系原创 2021-11-30 20:27:21 · 2088 阅读 · 0 评论 -
python 环形链表
|环形链表给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。输入:head = [3,2,0,-4], pos = 1输出:true原创 2021-11-29 10:00:00 · 752 阅读 · 0 评论 -
python 相交链表
|相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0listA - 第一个链表listB - 第二个链表skipA -原创 2021-11-28 12:08:15 · 474 阅读 · 0 评论 -
python 删除链表中倒数第N个节点
| 删除链表中倒数第N个节点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]| 题解# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, ne原创 2021-11-24 00:00:14 · 1530 阅读 · 0 评论 -
python 链表中倒数第k个节点
| 返回链表中倒数第K个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.|题解# Definition for singly-linked list.# class List原创 2021-11-22 00:39:56 · 1299 阅读 · 0 评论 -
python 奇偶链表
|奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-&原创 2021-11-17 13:12:53 · 337 阅读 · 0 评论 -
python 回文链表
| 回文链表给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。输入:head = [1,2,2,1]输出:true输入:head = [1,2]输出:false| 题解# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val#原创 2021-11-16 20:53:42 · 1423 阅读 · 0 评论 -
python 链表的反转
| 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]| 题解# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val =原创 2021-11-15 20:04:18 · 3692 阅读 · 0 评论 -
python 合并两个排序的链表
合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4| 题解# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = No原创 2021-11-14 23:43:37 · 902 阅读 · 0 评论 -
python 删除链表中的重复元素
| 删除链表中的重复元素存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。输入:head = [1,1,2]输出:[1,2]输入:head = [1,1,2,3,3]输出:[1,2,3]| 题解# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):#原创 2021-11-14 23:41:23 · 1468 阅读 · 0 评论 -
python 链表的中间节点
| 求链表的中间节点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.nex原创 2021-11-14 23:36:48 · 563 阅读 · 0 评论 -
python移除链表元素
| 移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]| 题解# Definition for singly-linked list.# class原创 2021-11-14 23:16:22 · 887 阅读 · 0 评论 -
python 链表两数相加
| 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l2原创 2021-11-14 18:25:02 · 577 阅读 · 0 评论 -
python 链表的基础概念和基础用法
一、什么是链表链表是由多个不同的节点组成,每个节点通过指针区域关联到一起链表的头指针,指向了头节点,通过头指针可以找到其他节点信息二、什么是节点链表由节点组成,每个节点又包含两个部分,一个是元素区域,一个是指针区域。元素区域存储的是,当前节点的数值,指针区域指向下一个节点的对象。在C语言中,指针应该是指向下一个元素的的内存地址,因python中不研究指针,这里用下一个节点的对象代替。这样我们就能通过指针区域,找到下一个节点的信息,从而得到下一个节点的值了。三、为什么引入链表的概念原创 2021-11-13 19:33:22 · 1483 阅读 · 0 评论