![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
BlackMan_阿伟
不积跬步无以至千里
展开
-
March——61.旋转链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def rotateRight(self, head: ListNode, k: int) -> ListNode: if not he...原创 2021-03-27 11:42:52 · 92 阅读 · 1 评论 -
LeetCode——2.两数相加
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: ...原创 2021-01-22 11:35:02 · 90 阅读 · 0 评论 -
LeetCode——445.两数相加II
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: pre1,pre2 = None,No...原创 2021-01-22 11:29:58 · 75 阅读 · 0 评论 -
《Leetcode of November》链表的反转总结(整体反转和部分反转)
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode: if not head: return None...原创 2020-11-26 15:35:58 · 179 阅读 · 0 评论 -
《Leetcode of November》82. 删除排序链表中的重复元素
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: if not head or not head.next...原创 2020-11-21 20:09:18 · 122 阅读 · 0 评论 -
《Leetcode of November》83. 删除排序链表中的重复元素
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: if not head or not head.next...原创 2020-11-21 20:01:19 · 89 阅读 · 0 评论 -
《Leetcode of November》147. 对链表进行插入排序
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def insertionSortList(self, head: ListNode) -> ListNode: if not head or not head.next:...原创 2020-11-20 11:50:51 · 105 阅读 · 0 评论 -
《Leetcode of November》328.奇偶链表(双指针法)
这个题目要求下标奇数的放在一下,下标偶数的放在一起,因此用双指针就是比较方便的 odd为奇指针,用head.next表示;even为偶指针用head来表示 遍历整个链表,将下标是奇数的指针都指向以odd开头的指针,下标是奇数的指针都指向以even指向的指针 然后将奇数的链表链在偶数链表的后面 就完成了该操作...原创 2020-11-13 21:30:02 · 103 阅读 · 0 评论 -
《Leetcode of October》234.回文链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def isPalindrome(self, head: ListNode) -> bool: if not head: return True ...原创 2020-10-23 16:23:30 · 96 阅读 · 0 评论 -
《Leetcode of October》19. 删除链表的倒数第N个节点
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: ...原创 2020-10-19 21:12:13 · 75 阅读 · 0 评论 -
《Leetcode of October》24.两两交换链表中的节点
笨方法先把链表的值都遍历出来放到列表中 然后两两交换其中相邻的节点 然后再构造一个链表出来常规方法设置一个伪节点,让这个节点指向链表的头节点 然后让头结点等于前驱节点pre 找出第一对要交换的节点 node1 = pre.next node2 = pre.next.next 对这三个节点重新链接 pre.next = node2 node2.next = node1.next node2.next = node1 更新pre的节点然后进行下一波更新 pr...原创 2020-10-13 21:12:35 · 104 阅读 · 0 评论 -
《Leetcode of October》141. 环形链表(快慢指针法)
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def hasCycle(self, head: ListNode) -> bool: if not head: return False ...原创 2020-10-09 18:54:29 · 128 阅读 · 1 评论 -
《Leetcode of October》142. 环形链表 II(快慢指针法)
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def detectCycle(self, head: ListNode) -> ListNode: #O(1) ...原创 2020-10-09 18:42:48 · 123 阅读 · 1 评论 -
剑指 Offer 24. 反转链表
题目链接:剑指 Offer 24. 反转链表递归实在没看明白,就写一个迭代吧。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode:..原创 2020-08-18 22:13:51 · 73 阅读 · 0 评论 -
中序遍历构建AVL树:109.有序链表转换二叉搜索树
题目链接:109.有序链表转换二叉搜索树画图表示一下:# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = next# Definition for a binary tree node.# class TreeNode:# def __i.原创 2020-08-18 21:19:01 · 307 阅读 · 0 评论 -
快慢指针法:876.链表的中间节点
题目链接:876.链表的中间结点# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def middleNode(self, head: ListNode) -> ListNode: if not head:..原创 2020-08-18 20:50:32 · 204 阅读 · 0 评论 -
面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]1、题目分析题目比较清晰,就是删除重复节点。可以利用一个set集合对重复节点去重。2、解题分析判断链表是否为空,不为空进行下一步 声明一个set集合,用来存储出现过的节点 如果节点的值在集合中就做删除节点pos.next = pos.next.next 如果节点不在集合中,添加节点的值到集合中并继续遍历pos = pos.next这个代原创 2020-06-26 16:43:28 · 109 阅读 · 0 评论 -
《链表》21.合并两个有序链表
思路:首先采用迭代法,设立一个哑节点,然后比较两个链表每个位置的大小,如果l1.val<=l2.val.那么l就指向下一个链表元素,然后在比较l1和l2的大小关系,重复上述操作,那么如果一个链表为空,此时遍历结束。因为两个链表本身都是升序的,所以只需要把没遍历完的列表直接拼接起来就完了;第二个操作是采用递归,因为总是采用小的在前大的在后,所以可以做这样一个建模。此图来自官方建模。总是让小...原创 2020-05-01 16:59:26 · 180 阅读 · 0 评论 -
《链表》面试题22.删除链表中倒数第k个节点
前言:上一篇写到4月都结束了,马上5月份了,毫无章法的刷了大概1个月,接下来刷题准备按照模块系列去刷。每天还是会打卡每日一题,但是相应的每天刷的题需要按模块去分类总结。我最怕的就是数据结构,那么就从最简单的数据结构链表开始刷,大概刷20-30个题左右,然后换模块,一直刷下去。好了,言归正传还是要说题。思路: 拿到这个题我是这么想的,先遍历链表计算整个链表的长度,然后计算出要走的n-k路程,...原创 2020-04-30 22:35:44 · 276 阅读 · 0 评论