自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

数据艺术家

数据挖掘领域懵逼者

  • 博客(214)
  • 收藏
  • 关注

原创 LeetCode专项刷题顺序:链表

我通过对LeetCode中链表部分的免费题目进行归类、整理,归纳出如下刷题顺序,希望对大家有所帮助。在刷题顺序的整理中,我主要遵循了如下规则:在题目分组方面,除综合题外,每组题目的技巧、方法均相似,方便统一学习;在各组题目的顺序方面,总体来说为由易到难,后一组题目比前一组略难一些,方便大家循序渐进;在每组题目的顺序方面,均为由易到难(难度为我依据自己的理解,对LeetCode给出的难度进行微调的结果),方便大家循序渐进。LeetCode链表部分刷题顺序第1组:设计链表707:【中等】设计

2020-07-27 12:04:09 117

原创 LeetCode题解(1137):二叉树中的列表(Python)

题目:原题链接(中等)标签:二叉树、二叉树-深度优先遍历、链表解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(KlogN)O(KlogN)O(KlogN) : K为目标链表长度96ms (99.54%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(存储所有当前可能情况)

2020-07-27 09:08:00 65

原创 Python中exec()作用域问题解决方案

首先,看一个使用exec的简单的例子:content = """class Tool: def __str__(self): return "Hello""""if __name__ == "__main__": exec(content) print(Tool())这个例子正常地返回了"Hello"的结果。但是,当我们在函数或类中运行exec函数后,就会报错。例如以下两种情况。def f(): exec(content) print

2020-07-15 10:13:33 218

原创 LeetCode题解(1171):从链表中删去总和值为零的连续节点(Python)

题目:原题链接(中等)标签:链表、哈希表、数组-前缀和解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N3)O(N^3)O(N3)O(N)O(N)O(N)超出时间限制Ans 2 (Python)O(N2)O(N^2)O(N2)O(N)O(N)O(N)72ms (34.26%)Ans 3 (Python)O(N)O(N)O(N)O(N)O(N)O(N)52ms (90.28%)LeetCode的Python执行用时随缘,只要时间

2020-07-14 17:24:56 82

原创 LeetCode题解(1019):链表中的下一个更大的节点(Python)

题目:原题链接(中等)标签:链表、栈解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)404ms (27.93%)Ans 2 (Python)O(N)O(N)O(N)O(N)O(N)O(N)352ms (85.11%)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(栈):def

2020-07-14 16:29:43 123

原创 LeetCode题解(0817):链表组件(Python)

题目:原题链接(中等)标签:链表解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(G)O(G)O(G)116ms (98.09%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一:def numComponents(self, head: ListNode, G: List

2020-07-14 16:05:53 81

原创 LeetCode题解(0725):尽可能长度相同地分隔链表(Python)

题目:原题链接(中等)标签:链表、链表-双指针解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(K)O(K)O(K)44ms (91.57%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一:def splitListToParts(self, root: ListNode

2020-07-14 16:00:07 46

原创 LeetCode题解(0445):两链表表示的数相加(Python)

题目:原题链接(中等)标签:链表、链表-双指针、栈解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)88ms (71.38%)Ans 2 (Python)O(N)O(N)O(N)O(N)O(N)O(N)88ms (71.38%)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针

2020-07-14 15:42:05 79

原创 LeetCode题解(0430):扁平化多级双向链表(Python)

题目:原题链接(中等)标签:链表、链表-特殊链表、深度优先遍历解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)48ms (59.30%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(递归的深度优先搜索):def flatten(self, head

2020-07-14 15:17:55 73

原创 LeetCode题解(0328):依据节点编号的奇偶性排序链表(Python)

题目:原题链接(中等)标签:链表、链表-双指针解法时间复杂度空间复杂度执行用时Ans 1 (Python)52ms (85.84%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def oddEvenList(self, head: ListNode) -> ListNode: od

2020-07-14 14:52:38 44

原创 LeetCode题解(0148):常数级空间复杂度排序链表(Python)

题目:原题链接(中等)标签:链表、链表-双指针、排序、排序-归并排序解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(NlogN)O(NlogN)O(NlogN)O(logN)O(logN)O(logN)428ms (5.14%)Ans 2 (Python)O(NlogN)O(NlogN)O(NlogN)O(1)O(1)O(1)264ms (32.29%)Ans 3 (Python)O(NlogN)O(NlogN)O(NlogN)O(1)

2020-07-14 14:16:39 71

原创 LeetCode题解(0147):对链表进行插入排序(Python)

题目:原题链接(中等)标签:链表、链表-双指针、排序、排序-插入排序说明:这道题不要去和那些直接sort排序的人比,时间复杂度摆在这儿呢,比不过的。解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N2)O(N^2)O(N2)O(N)O(N)O(N)1796ms (28.65%)Ans 2 (Python)O(N2)O(N^2)O(N2)O(N)O(N)O(N)224ms (65.98%)Ans 3 (Python)LeetC

2020-07-14 12:37:15 55

原创 LeetCode题解(0143):重排链表(Python)

题目:原题链接(中等)标签:链表、链表-双指针、链表-快慢针解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)140ms (17.17%)Ans 2 (Python)O(N)O(N)O(N)O(1)O(1)O(1)104ms (79.31%)Ans 3 (Python)O(N)O(N)O(N)O(1)O(1)O(1)104ms (79.31%)LeetCode的Python执行用时随缘

2020-07-14 11:41:23 50

原创 LeetCode题解(0142):环形链表(Python)

题目:原题链接(中等)标签:链表、链表-双指针、链表-快慢针解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)52ms (98.07%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(快慢针):思路:设从起点到入口的距离为x,慢针进入环后行进的距离

2020-07-13 17:06:54 75

原创 LeetCode题解(0138):复制带随机指针的链表(Python)

题目:原题链接(中等)标签:链表解法时间复杂度空间复杂度执行用时Ans 1 (Python)––52ms (42.35%)Ans 2 (Python)O(N)O(N)O(N)O(N)O(N)O(N)36ms (98.50%)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(使用内置函数):def copyRandomList(self,

2020-07-13 16:38:06 56

原创 LeetCode题解(0109):有序链表转换二叉搜索树(Python)

题目:原题链接(中等)标签:链表、链表-双指针、链表-快慢针、二叉树-二叉搜索树、二叉树-递归、二叉树-中序遍历、递归解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(NlogN)O(NlogN)O(NlogN)O(logN)O(logN)O(logN)76ms (92.95%)Ans 2 (Python)O(N)O(N)O(N)O(N)O(N)O(N)76ms (92.95%)Ans 3 (Python)O(N)O(N)O(N)O(lo

2020-07-13 15:43:45 57

原创 LeetCode题解(0092):部分反转链表(Python)

题目:原题链接(中等)标签:链表、链表-双指针解法时间复杂度空间复杂度执行用时Ans 1 (Python)32ms (97.17%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def reverseBetween(self, head: ListNode, m: int, n: int) -&g

2020-07-13 15:05:14 65

原创 LeetCode题解(0086):依据特定值分隔链表(Python)

题目:原题链接(中等)标签:链表解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)40ms (87.18%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一:def partition(self, head: ListNode, x: int) -&gt

2020-07-13 14:53:18 52

原创 LeetCode题解(0082):删除排序链表中的重复元素(Python)

题目:原题链接(中等)标签:链表、链表-双指针解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)40ms (98.18%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def deleteDuplicates(self, head: Lis

2020-07-13 14:25:35 51

原创 LeetCode题解(0061):旋转链表(Python)

题目:原题链接(中等)标签:链表解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)40ms (91.04%)Ans 2 (Python)O(N)O(N)O(N)O(1)O(1)O(1)40ms (91.04%)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def ro

2020-07-13 14:18:43 45

原创 LeetCode题解(0025):K个一组翻转链表(Python)

题目:原题链接(困难)标签:链表、链表-双指针解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)56ms (69.08%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def reverseKGroup(self, head: ListNo

2020-07-13 11:05:34 96

原创 LeetCode题解(0024):两两交换链表中的节点(Python)

题目:原题链接(中等)标签:链表解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)40ms (74.11%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def swapPairs(self, head: ListNode) -> L

2020-07-13 10:25:15 44

原创 LeetCode题解(0023):合并K个排序链表(Python)

题目:原题链接(困难)标签:链表、分治算法、堆排序解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N×K2)O(N×K^2)O(N×K2) : K为列表元素数量O(1)O(1)O(1)超出时间限制Ans 2 (Python)O(N×K×logK)O(N×K×logK)O(N×K×logK): K为列表元素数量O(K)O(K)O(K)176ms (21.45%)Ans 3 (Python)O(NKlog(NK))O(NKlog(NK))O(

2020-07-13 10:18:02 53

原创 LeetCode题解(0019):删除链表的倒数第N个节点(Python)

题目:原题链接(中等)标签:链表-双指针、链表-遍历解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)40ms (81.69%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(双指针):def removeNthFromEnd(self, head:

2020-07-12 12:34:02 45

原创 《大话数据结构》配套源码:队列(Python版)
原力计划

该书随书源码的语言为C;我参考书中内容和配套源码,写了一套Python格式的配套源码。这套配套源码并非直接翻译C语言的配套源码,而是结合我的理解略作了修改。 【Github项目地址】作者:长行时间:2020.07.12Queue 队列的结构定义class Queue: """队列的结构定义""" def __init__(self): """初始化一个空队列""" pass def __len__(self): """返.

2020-07-12 11:02:38 80

原创 《大话数据结构》配套源码:栈(Python版)

该书随书源码的语言为C;我参考书中内容和配套源码,写了一套Python格式的配套源码。这套配套源码并非直接翻译C语言的配套源码,而是结合我的理解略作了修改。 【Github项目地址】作者:长行时间:2020.07.12Stack 栈的结构定义class Stack: """栈的结构定义""" def __init__(self): """初始化一个空栈""" pass def __len__(self): """返回栈内.

2020-07-12 10:10:23 85

原创 《大话数据结构》配套源码:链表(Python版)
原力计划

该书随书源码的语言为C;我参考书中内容和配套源码,写了一套Python格式的配套源码。这套配套源码并非直接翻译C语言的配套源码,而是结合我的理解略作了修改。 【Github项目地址】作者:长行时间:2020.07.12LinkedList 链表 (第3章 - 第2部分)SinglyLinkedNode 单链表结点class SinglyLinkedNode: """单链表结点""" __slots__ = "value", "next" # 使用__slots__减少内存占.

2020-07-12 09:19:22 111

原创 【数据结构专项】链表(2) —— 链表的基本操作(Python)
原力计划

单链表的基本操作(包含头结点的单链表)# 单链表结点类class ListNode: def __init__(self, val): self.val = val self.next = None def __str__(self): return str(self.val) + "->" + str(self.next)单链表的读取(给定读取坐标):读取第index个结点的值。(时间复杂度:O(n))# 单链表的读

2020-07-07 12:40:27 595

原创 【数据结构专项】链表(7) —— 管理双向链表的基本类(使用双侧哨兵结点)

class DoublyLinkedBase: """管理双向链表的基本类(使用双侧哨兵结点)""" class _Node: __slots__ = "value", "prev", "next" # 因为会创建很多个结点对象,因此使用__slots__来减少内存占用 def __init__(self, value, prev=None, next=None): self.value = value s

2020-07-07 12:02:06 84

原创 【数据结构专项】链表(6) —— 管理单向链表的基本类(包含头结点)

class SinglyLinkedList: """管理单向链表的基本类(使用头结点)""" class _Node: __slots__ = "value", "next" # 因为会创建很多个结点对象,因此使用__slots__来减少内存占用 def __init__(self, value, next=None): self.value = value self.next = next

2020-07-07 11:43:12 783

原创 LeetCode题解(0707):设计链表(Python)

题目:原题链接(中等)标签:单链表、设计解法时间复杂度空间复杂度执行用时Ans 1 (Python)––208ms (77.36%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一:class MyLinkedList: class _Node: """""" __slo

2020-07-07 11:37:35 67

原创 【数据结构专项】链表(5) —— 用循环链表实现队列

用循环链表实现队列队首位于单链表的头结点处,队尾位于单链表的尾结点处,尾结点的指针域指向头结点;维护尾指针和链表长度;当加入元素时,依据尾指针在尾结点后添加新元素,取出元素时候依据尾指针,取出尾结点指向的头结点元素并删除头结点。class CircularQueue: """用循环链表实现队列""" class _Node: """""" __slots__ = "value", "next" # 因为会创建很多个结点对象,因此使用__slots__来

2020-07-07 10:35:34 122

原创 【数据结构专项】链表(4) —— 用单链表实现队列(Python)

用单链表实现队列队首位于单链表的头结点处,队尾位于单链表的尾结点处,维护头指针、尾指针和链表长度;加入元素时依据尾指针添加到尾结点后,取出元素时候依据头指针取出元素并删除头结点。class LinkedQueue: """单链表实现的队列""" class _Node: """""" __slots__ = "value", "next" # 因为会创建很多个结点对象,因此使用__slots__来减少内存占用 def __init__

2020-07-07 10:23:54 95

原创 【数据结构专项】链表(3) —— 用单链表实现栈(Python)

用单链表实现栈栈顶位于单链表的头结点处,维护头指针和链表长度;每次压入元素则在头结点前插入新结点,取出元素则删除头结点。class LinkedStack: """单链表实现的栈""" class _Node: """""" __slots__ = "value", "next" # 因为会创建很多个结点对象,因此使用__slots__来减少内存占用 def __init__(self, value, next):

2020-07-07 10:23:00 65

原创 【数据结构专项】链表(1) —— 知识回顾

知识回顾与数组相似,链表是一种线性数据结构。链表中的每个元素都是一个单独的对象(结点/节点,Node), 每个元素除了存储自己本身的信息(数据域)之外,还存储一个指示下一个元素位置的引用字段(指针域)。单链表单链表的每个结点包含值和下一个结点的引用字段。单链表结点的典型定义如下:# 单链表结点的典型定义class ListNode: def __init__(self, val): self.val = val self.next = None环形链

2020-07-07 10:21:07 50

转载 Python类的__slot__的用法

参考文献A

2020-07-07 09:44:51 116

原创 LeetCode题解(1502):判断能否形成等差数列(Python)

题目:原题链接(简单)解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(NlogN)O(NlogN)O(NlogN)O(N)O(N)O(N)44ms (100.00%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(排序法):[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i

2020-07-06 17:28:35 162

原创 LeetCode题解(1496):依据移动方向判断路径是否相交(Python)

题目:原题链接(简单)解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)32ms (96.86%)Ans 2 (Python)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一(存储到过的位置):def isPathCrossing(self, path: str) -> boo

2020-07-06 17:25:38 229

原创 LeetCode题解(1491):去掉最低工资和最高工资后的工资平均值(Python)

题目:原题链接(简单)解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(1)O(1)O(1)36ms (83.26%)Ans 2 (Python)O(N)O(N)O(N)O(1)O(1)O(1)32ms (95.38%)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一:def average(self,

2020-07-06 17:21:42 1041

原创 LeetCode题解(1486):数组异或操作(Python)

题目:原题链接(简单)解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)40ms (71.92%)Ans 2 (Python)O(N)O(N)O(N)O(1)O(1)O(1)40ms (71.92%)Ans 3 (Python)LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。解法一:def xorOperation(

2020-07-06 17:16:43 145

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除