LeetCode
文章平均质量分 72
清水雅然君
这个作者很懒,什么都没留下…
展开
-
每日题解:LeetCode 897. 递增顺序搜索树
题目地址题目描述给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u31xCcBU-1619365061635)(1)]示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,原创 2021-04-25 23:37:59 · 122 阅读 · 0 评论 -
每日题解:LeetCode 208. 实现 Trie (前缀树)
题目地址题目描述Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean s原创 2021-04-14 22:51:39 · 133 阅读 · 0 评论 -
每日题解:LeetCode 783. 二叉搜索树节点最小距离
题目地址题目描述给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同示例 1:输入:root = [4,2,6,1,3]输出:1示例 2:输入:root = [1,0,48,null,null,12,49]输出:1解法javaclass Solution { int pre;原创 2021-04-13 23:27:40 · 128 阅读 · 0 评论 -
每日题解:LeetCode 45. 螺旋矩阵
题目地址题目描述给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hPDkehR9-1615821187527)(https://www.kura.ren/upload/2021/03/spiral1-0e7d505e4e4c4aabb76e01969f7c4a08.jpg)]示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2原创 2021-03-15 23:14:20 · 183 阅读 · 0 评论 -
每日题解:LeetCode 1190. 反转每对括号间的子串
题目地址个人博客地址题目描述解法解题思路原创 2020-08-06 20:43:00 · 557 阅读 · 0 评论 -
每日题解:LeetCode 1019. 链表中的下一个更大节点
题目地址个人博客地址题目描述给出一个以头节点 head 作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, … 。每个节点都可能有下一个更大值(next larger value):对于 node_i,如果其 next_larger(node_i) 是 node_j.val,那么就有 j > i 且 node_j.val > node_i.val,而 j 是可能的选项中最小的那个。如果不存在这样的 j,那么下一个更大值为 0 。返回整数答案数原创 2020-07-30 22:46:55 · 587 阅读 · 0 评论 -
每日题解:LeetCode 144. 二叉树的前序遍历(中、后序遍历,以及递归、迭代写法)
题目地址个人博客地址题目描述给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法cpp迭代class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<Integer>原创 2020-07-27 22:33:07 · 151 阅读 · 0 评论 -
每日题解:LeetCode 454. 四数相加 II
题目地址个人博客地址题目描述给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出原创 2020-07-22 22:40:09 · 361 阅读 · 0 评论 -
每日题解:LeetCode 167. 两数之和 II - 输入有序数组
题目地址个人博客地址题目描述解法CPPclass Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int low = 0, high = numbers.size() - 1; while (low < high) { int sum = numbers[low] + numbers[high];原创 2020-07-20 20:59:21 · 140 阅读 · 1 评论 -
每日题解: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解法JAVAclass Solution { public in原创 2020-07-17 22:00:40 · 297 阅读 · 0 评论 -
每日题解:LeetCode 120. 三角形最小路径和
题目地址个人博客地址题目描述解法解题思路原创 2020-07-14 22:28:31 · 148 阅读 · 0 评论 -
每日题解:LeetCode 174. 地下城游戏
题目地址个人博客地址题目描述一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值原创 2020-07-12 23:07:59 · 273 阅读 · 0 评论 -
每日题解:LeetCode 48. 旋转图像
题目地址个人博客地址题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1, 9,11],原创 2020-07-09 23:19:34 · 188 阅读 · 0 评论 -
每日题解:LeetCode 112. 路径总和
题目地址个人博客地址题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的原创 2020-07-07 22:20:15 · 168 阅读 · 0 评论 -
每日题解:LeetCode 63. 不同路径 II
题目地址个人博客地址题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 2解释:3x3原创 2020-07-06 22:09:46 · 120 阅读 · 0 评论 -
每日题解:LeetCode 44. 通配符匹配
题目地址个人博客地址题目描述给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串示例 2:输原创 2020-07-05 20:36:08 · 205 阅读 · 0 评论 -
每日题解:LeetCode 32. 最长有效括号
题目地址个人博客地址题目描述给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"解法java栈public class Solution { public int longestValidParentheses(String s) { int ans = 0,原创 2020-07-05 00:34:17 · 121 阅读 · 0 评论 -
每日题解:LeetCode 718. 最长重复子数组
题目地址个人博客地址题目描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。 提示:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100解法JAVAclass Solution { public int findLength(int[] A,原创 2020-07-01 22:42:01 · 192 阅读 · 0 评论 -
每日题解:LeetCode 23. 合并K个排序链表
题目地址个人博客地址题目描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解法CPPclass Solution {public: ListNode* mergeKLists(vector<ListNode*>& lists) {原创 2020-06-30 22:25:26 · 219 阅读 · 0 评论 -
每日题解:LeetCode 215. 数组中的第K个最大元素
题目地址个人博客地址题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。解法JAVAclass Solution { public int findKthLargest(原创 2020-06-30 00:15:23 · 136 阅读 · 0 评论 -
每日题解:LeetCode 209. 长度最小的子数组(差一个解法)
题目地址个人博客地址题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。解法JAVA双指针public class Soluti原创 2020-06-28 22:59:43 · 280 阅读 · 0 评论 -
每日题解:LeetCode 41. 缺失的第一个正数
题目地址个人博客地址题目描述给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。解法JAVAhashSet(时间复杂度不符合条件)public class Solution { public int firstMissingPos原创 2020-06-27 15:49:16 · 182 阅读 · 0 评论 -
每日题解:LeetCode 1487. 保证文件名唯一
题目地址个人博客地址题目描述给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数 。返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。示例 1:输入:names = ["pes",原创 2020-06-26 22:42:23 · 438 阅读 · 0 评论 -
每日题解:LeetCode 139. 单词拆分
题目地址个人博客地址题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepe原创 2020-06-26 00:25:17 · 146 阅读 · 0 评论 -
每日题解:LeetCode 16. 最接近的三数之和
题目地址个人博客地址题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <原创 2020-06-24 23:30:53 · 149 阅读 · 0 评论 -
每日题解:LeetCode 67. 二进制求和
题目地址个人博客地址题目描述给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。解法JAVA字符翻转原创 2020-06-23 23:24:21 · 160 阅读 · 0 评论 -
每日题解:LeetCode 面试题 16.18. 模式匹配
题目地址个人博客地址题目描述你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例 1:输入: pattern = "abba", value = "dogca原创 2020-06-22 23:21:02 · 274 阅读 · 0 评论 -
每日题解:LeetCode 124. 二叉树中的最大路径和
题目地址个人博客地址题目描述给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7输出: 42解法public class So原创 2020-06-21 22:03:55 · 188 阅读 · 0 评论 -
每日题解:LeetCode 10. 正则表达式匹配
题目地址个人博客地址题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。原创 2020-06-21 00:34:19 · 477 阅读 · 0 评论 -
每日题解:LeetCode 125. 验证回文串
题目地址个人博客地址题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false解法CPPclass Solution {public: bool isPalindrome(string s) { int left = 0,原创 2020-06-19 20:48:05 · 121 阅读 · 0 评论 -
每日题解:LeetCode 1028. 从先序遍历还原二叉树
题目地址个人博客地址题目描述我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。示例 1:输入:"1-2--3--4-5--6--7"输出:[1,2,5,3,4,6,7]示例 2:输入:"1-2--3-原创 2020-06-18 23:52:52 · 231 阅读 · 0 评论 -
每日题解:LeetCode 1014. 最佳观光组合
题目地址个人博客地址题目描述给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11 提示:2 <=原创 2020-06-17 23:04:10 · 149 阅读 · 0 评论 -
每日题解:LeetCode 297. 二叉树的序列化与反序列化
题目地址个人博客地址题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例: 你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列原创 2020-06-16 21:45:43 · 278 阅读 · 0 评论 -
每日题解:LeetCode 1300. 转变数组后最接近目标值的数组和
题目地址个人博客地址题目描述给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成 [3,原创 2020-06-14 17:37:34 · 157 阅读 · 0 评论 -
每日题解:LeetCode 70. 爬楼梯
题目地址个人博客地址题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶解法JAVApublic clas原创 2020-06-13 20:31:44 · 178 阅读 · 0 评论 -
每日题解:LeetCode 739. 每日温度
题目地址个人博客地址题目描述每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。原创 2020-06-11 21:56:05 · 355 阅读 · 0 评论 -
每日题解:LeetCode 9. 回文数
题目地址个人博客地址题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?解法JAVApublic c原创 2020-06-10 22:04:11 · 135 阅读 · 0 评论 -
每日题解:LeetCode 面试题46. 把数字翻译成字符串
题目地址个人博客地址题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:0 <= num < 231解法JAVA Strin原创 2020-06-09 23:04:58 · 129 阅读 · 0 评论 -
每日题解:LeetCode 990. 等式方程的可满足性
题目地址个人博客地址题目描述给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无法满足原创 2020-06-08 23:03:07 · 237 阅读 · 0 评论 -
每日题解:LeetCode 1117. H2O 生成
题目地址个人博客地址题目描述现在有两种线程,氢 oxygen 和氧 hydrogen,你的目标是组织这两种线程来产生水分子。存在一个屏障(barrier)使得每个线程必须等候直到一个完整水分子能够被产生出来。氢和氧线程会被分别给予 releaseHydrogen 和 releaseOxygen 方法来允许它们突破屏障。这些线程应该三三成组突破屏障并能立即组合产生一个水分子。你必须保证产生一个水分子所需线程的结合必须发生在下一个水分子产生之前。换句话说:如果一个氧线程到达屏障时没有氢线程到达原创 2020-06-07 23:17:43 · 358 阅读 · 0 评论