Leetcode
文章平均质量分 78
白露塞纳
星辰!
展开
-
【LeetCode】23. 合并K个升序链表
一、题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = []输出:[原创 2021-10-26 08:43:00 · 108 阅读 · 0 评论 -
【LeetCode】309. 最佳买卖股票时机含冷冻期
一、题目给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]二、 解决系列:121、122.1、思路:代码:时间复杂度:原创 2021-06-06 16:30:45 · 92 阅读 · 0 评论 -
【LeetCode】227. 基本计算器 II(同NC137)
一、题目给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = "3+2*2"输出:7示例 2:输入:s = " 3/2 "输出:1示例 3:输入:s = " 3+5 / 2 "输出:5提示:1<=s.length<=3∗1051 <= s.length <= 3 * 10^51<=s.length<=3∗105s 由整数和算符 ('+', '-', '*', '/') 组成原创 2021-06-05 18:40:23 · 160 阅读 · 0 评论 -
【LeetCode】56. 合并区间(同NC37)
一、题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4],原创 2021-06-01 17:34:47 · 152 阅读 · 0 评论 -
【LeetCode】692. 前K个高频单词(类似NC97)
一、题目给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。示例 2:输入: [“the”, “day”, “i原创 2021-05-25 18:56:02 · 169 阅读 · 0 评论 -
【LeetCode】92. 反转链表 II
一、题目给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5]提示:链表中节点数目为 n1 <= n <= 500-50原创 2021-05-10 19:55:16 · 332 阅读 · 0 评论 -
【LeetCode】42. 接雨水(同NC128)
一、题目给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = "abcde", text2原创 2021-05-05 19:10:01 · 187 阅读 · 0 评论 -
【LeetCode】199. 二叉树的右视图(类似NC136[more difficult])
一、题目给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---二、解决1、思路:代码:class Solution { public List<Integer> rig原创 2021-05-05 16:53:53 · 107 阅读 · 0 评论 -
【LeetCode】148. 排序链表(同NC70)
一、题目给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内-105 <= Node.val原创 2021-05-05 15:07:13 · 203 阅读 · 0 评论 -
【LeetCode】41. 缺失的第一个正数(同NC30)
一、题目给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:0<=nums.length<=3000 <= nums.length <= 3000<=nums.len原创 2021-04-30 19:02:24 · 197 阅读 · 2 评论 -
【LeetCode】5. 最长回文子串
一、题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空原创 2021-04-27 18:20:43 · 509 阅读 · 4 评论 -
【LeetCode】35. 搜索插入位置
一、题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0二、解决1、二分查找思路:简单二分查找If nums[mid] == target,Then r原创 2021-04-25 15:41:36 · 86 阅读 · 0 评论 -
【LeetCode】1143. 最长公共子序列(似NC92 && NC127)
一、题目给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = "abcde", text2 =原创 2021-04-20 12:09:42 · 186 阅读 · 0 评论 -
【LeetCode】9. 回文数
一、题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。原创 2021-04-17 18:22:57 · 276 阅读 · 0 评论 -
【LeetCode】19. 删除链表的倒数第 N 个结点(同NC53)
一、题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶: 你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <=原创 2021-04-13 09:50:58 · 98 阅读 · 0 评论 -
【LeetCode】334. 递增的三元子序列
一、题目给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例 2:输入:nums = [5,4,3,2,1]输出:false原创 2021-03-20 18:08:57 · 509 阅读 · 0 评论 -
LeetCode题目集
题号题目题解链接标签备注141141. 环形链表【LeetCode】141、环形链表链表、双指针2424. 两两交换链表中的节点【LeetCode】24. 两两交换链表中的节点递归、链表142-II142. 环形链表 II【LeetCode】142.环形链表 II链表、双指针2525. K 个一组翻转链表【LeetCode】25.K 个一组翻转链表链表232232. 用栈实现队列【LeetCode】232. 用栈实现队列...原创 2021-03-18 16:24:34 · 265 阅读 · 0 评论 -
【LeetCode】151. 翻转字符串里的单词(同剑指 Offer 58 - I)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-16 18:56:55 · 175 阅读 · 0 评论 -
【LeetCode】110. 平衡二叉树(同剑指 Offer 55 - II)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-16 18:25:25 · 213 阅读 · 0 评论 -
【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置(同剑指 Offer 53 - I)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-16 16:19:19 · 232 阅读 · 0 评论 -
【LeetCode】104. 二叉树的最大深度(同剑指 Offer 55 - I)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-09 18:58:01 · 145 阅读 · 0 评论 -
【LeetCode】160. 相交链表(同剑指 Offer 52)
一、题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为原创 2020-12-09 14:55:24 · 137 阅读 · 0 评论 -
【LeetCode】154. 寻找旋转排序数组中的最小值 II(同 剑指 Offer 11)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-08 19:33:45 · 193 阅读 · 0 评论 -
【LeetCode】155. 最小栈(同 剑指 Offer 30)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-06 19:44:09 · 149 阅读 · 0 评论 -
【LeetCode】54. 螺旋矩阵(同 剑指 Offer 29)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-06 18:48:04 · 139 阅读 · 0 评论 -
【LeetCode】226. 翻转二叉树(同 剑指 Offer 27)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-06 17:28:06 · 175 阅读 · 0 评论 -
【LeetCode】21. 合并两个有序链表(同 剑指 Offer 25)
一、题目二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)三、参考1、2、3、...原创 2020-12-06 16:17:33 · 151 阅读 · 0 评论 -
【LeetCode】138. 复制带随机指针的链表(同 剑指 Offer 35)
一、题目给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。示例 1:输入:head = [[7,null],[13,0],[11,4],[10原创 2020-12-04 15:41:58 · 146 阅读 · 0 评论 -
【LeetCode】105. 根据一棵树的前序遍历与中序遍历构造二叉树。(同剑指 Offer 07)
一、题目注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代码:时间复杂度: O(n)O(n)原创 2020-12-02 15:52:35 · 360 阅读 · 2 评论 -
【LeetCode】264. 丑数 II(同剑指 Offer 49)
一、题目编写一个程序,找出第 n 个丑数。丑数就是质因数只包含 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)2、思路:代码:时间复杂度: O(n)O(n)O(n)空间复杂度: O(n)O(n)O(n)3、思路:代原创 2020-11-26 16:56:09 · 143 阅读 · 0 评论 -
【LeetCode】426. 将二叉搜索树转化为排序的双向链表(剑指 Offer 36)
一、题目将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 。对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。特别地,我们希望可以 就地 完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中最小元素的指针。示例 1:输入:root = [4,2,5,1,3] 输出:[1,2,3,4,5]解释:下图显示了转化后的二叉搜索树,实线表示后继关系,虚线表示原创 2020-11-25 19:34:09 · 404 阅读 · 0 评论 -
【LeetCode】946. 验证栈序列(同剑指 Offer 31)
一、题目给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4), pop() -> 4,push(5), pop() -> 5,原创 2020-11-24 16:20:12 · 148 阅读 · 0 评论 -
【LeetCode-剑指Offer】32 - III. 从上到下打印二叉树 III
一、题目请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]提示:节点总数 <= 1000二、解决1、思路:代码:时间复杂度: O(n)O(n)O(n原创 2020-11-23 15:20:05 · 240 阅读 · 0 评论 -
【LeetCode】113. 路径总和 II(同剑指 Offer 34)
一、题目给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2], [5原创 2020-11-23 14:24:12 · 135 阅读 · 0 评论 -
【LeetCode-剑指Offer】59 - II. 队列的最大值
一、题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”][[],[1],[2],[],[],[]]输出: [null,null,null,2,1,2原创 2020-11-17 18:06:56 · 225 阅读 · 0 评论 -
【LeetCode】3. 无重复字符的最长子串(同剑指 Offer 48)
一、题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。二、解原创 2020-11-16 17:01:04 · 238 阅读 · 0 评论 -
【LeetCode】79. 单词搜索(同剑指 Offer 12)
一、题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 fals原创 2020-11-15 17:19:46 · 140 阅读 · 0 评论 -
【LeetCode】240. 搜索二维矩阵 II(同剑指 Offer 04)
一、题目编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回 tru原创 2020-11-13 17:10:49 · 108 阅读 · 0 评论 -
【LeetCode】240. 搜索二维矩阵 II(同剑指 Offer 04)
一、题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二、代码1、暴力破解import java.util.*;class Solution { public boolean Find(int target, int [][] a...原创 2019-12-06 10:37:18 · 160 阅读 · 0 评论 -
【LeetCode】400. 第N个数字(同剑指 Offer 44)
一、题目在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。注意:n 是正数且在32位整数范围内 ( n < 231)。示例 1:输入:3输出:3示例 2:输入:11输出:0说明:第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是0,它是10的一部分。二、解决1、思路:代码:时间复杂度:空间复杂度:2、思路:代码:时间复杂度:空间复杂度:3、原创 2020-11-13 16:34:00 · 187 阅读 · 0 评论