随笔分类 - leetcode算法题
摘要:解题思路 1、快慢指针找中点,等分成左右两个部分2、右半部分逆序3、左右两个部分逐个拼接 class Solution: def reorderList(self, head: ListNode) -> None: """ Do not return anything, modify head in
阅读全文
posted @ 2021-09-12 19:55
秋华
摘要:class Solution(object): def detectCycle(self, head): fast, slow = head, head while True: if not (fast and fast.next): return fast, slow = fast.next.ne
阅读全文
posted @ 2021-09-12 19:21
秋华
摘要:给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅
阅读全文
posted @ 2021-09-12 19:10
秋华
摘要:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中
阅读全文
posted @ 2021-09-12 19:06
秋华
摘要:给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 # Definition for a binary tree no
阅读全文
posted @ 2021-09-12 18:55
秋华
摘要:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 其实蛮简单的,就是找链表中间节点作为根节点,然后再找中点两边的子链表的中点,一直递归下去直到子链表为空 特例处理:如果head
阅读全文
posted @ 2021-09-12 18:49
秋华
摘要:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 根据上面的图示,这里说下其中涉及的参数,以及其中反转过程中的步骤: 其中涉及的参数: dummy_node:哑节
阅读全文
posted @ 2021-09-12 18:37
秋华
摘要:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 这道题最简单的解题方式,就是我们创建两个小链表和大链表。然后循环head,当head.val小于x时,追加到小链
阅读全文
posted @ 2021-09-12 18:31
秋华
摘要:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 思路 标签:链表 指定 cur 指针指向头部 head 当 cur 和 cur.next 的存在为循环结束条件,当二者有一个不存在时说明链表没有去重复的必要
阅读全文
posted @ 2021-09-12 18:20
秋华
摘要:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。 返回同样按升序排列的结果链表。 提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升
阅读全文
posted @ 2021-09-12 18:16
秋华
摘要:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 翻译题目 : 就是把原来的链表尾部连上头,然后找倒数第k个点作为新的表头但值得注意的是,当k超过链表长度的时候就相当于链表重置了,所以需要k对节点长度取余 class Solution: def rotateRight
阅读全文
posted @ 2021-09-12 18:12
秋华
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2: 输入:head = []输出:[]示例 3: 输入:head = [1]输出:[1] 提示: 链表中节
阅读全文
posted @ 2021-09-12 18:08
秋华
摘要:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2: 输入:l1 = [], l2 = []输出:[]示例 3: 输入:l1 = [], l2 = [0]
阅读全文
posted @ 2021-09-12 18:03
秋华
摘要:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1输出:[]示例 3: 输入:head = [1,2]
阅读全文
posted @ 2021-09-12 17:54
秋华
摘要:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 输入:l1 = [2,4,3], l2 = [5,6,4]输出:
阅读全文
posted @ 2021-09-12 17:49
秋华
摘要:来源https://www.bilibili.com/video/BV1T5411e7D2
阅读全文
posted @ 2021-06-13 14:46
秋华
摘要:今天我们就来学习“数据结构入门系列”中最后一个数据结构“图”。图是很常用的数据结构,比如计算机网络、社交网络、谷歌地图都需要用到此数据结构,掌握图的知识可以完善我们的数据结构知识体系,也能帮助我们解决算法中更为复杂的问题。 简单来说,图是一种用来表示相连数据的数据结构,类似我们的社交网络,图中有很多
阅读全文
posted @ 2021-06-13 14:30
秋华
摘要:来源:https://turingplanet.org/2020/03/07/%e4%bc%98%e5%85%88%e9%98%9f%e5%88%97-priorityqueue/ 在之前提到的数据结构中,如果我们想要寻找所存元素中最大值或者最小值,需要挨个查找,而本章所学的优先队列和堆会按照优先级
阅读全文
posted @ 2021-06-13 14:27
秋华
摘要:树的基本概念 树是一种非常有用的数据结构,数据库的实现大部分都是基于树结构的,比如在一种特殊的树结构“红黑树”中,寻找任意元素的复杂度仅仅只需要log(N)。树是一种由节点组成的数据结构,但它比链表更加高级,在链表中,一个节点连接着另一个节点,树也是由许多的节点构成的,唯一的区别就是一个树节点可以连
阅读全文
posted @ 2021-06-13 14:20
秋华

浙公网安备 33010602011771号