【每日算法】LeetCode 148 —— 排序链表(二百三十八)
题目内容给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例示例 1: 输入:head = [4,2,1,3]输出:[1,2,3,4] 示例 2: 输入:head = [-1,5,3,4,0]输出 ...
Read more
【每日算法】LeetCode 147 —— 对链表做插入排序(二百三十七)
题目内容对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 1、插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列 ...
Read more
【每日算法】LeetCode 146 —— LRU缓存机制(二百三十六)
题目内容运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字 ...
Read more
【每日算法】LeetCode 145 —— 二叉树后序遍历(二百三十五)
题目内容给定一个二叉树,返回它的 后序 遍历。 用迭代算法完成 示例输入: [1,null,2,3] 输出: [3,2,1] 题解本题有多种思路可以求解。 首先,看一个比较取巧的方法。 我们知道,前序遍历的顺序是根、左、右,因此我们可以在前序遍历的基础上,将遍历顺序改为根、右、左,这下这个顺序 ...
Read more
【每日算法】LeetCode 144 —— 二叉树前序遍历(二百三十四)
题目内容给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例示例 1: 输入:root = [1,null,2,3]输出:[1,2,3] 示例 2: 输入:root = []输出:[] 示例 3: 输入:root = [1]输出:[1] 示例 4: 输入:root = [1,2]输 ...
Read more
【每日算法】LeetCode 143 —— 重排链表(二百三十三)
题目内容给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例示例 1: 输入 ...
Read more
【每日算法】LeetCode 142 —— 环形链表II(二百三十二)
题目内容给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。请 ...
Read more
【每日算法】LeetCode 141 —— 环形链表(二百三十一)
题目内容给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传 ...
Read more
【每日算法】LeetCode 140 —— 单词拆分II(二百三十)
题目内容给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明: 1、分隔时可以重复使用字典中的单词。2、你可以假设字典中没有重复的单词。 示例示例 1: 输入:s = “catsand ...
Read more
【每日算法】LeetCode 139 —— 单词拆分(二百二十九)
题目内容给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 1、拆分时可以重复使用字典中的单词。2、你可以假设字典中没有重复的单词。 示例示例 1: 输入: s = “leetcode”, wordDict = [ ...
Read more