每日题解
清水雅然君
这个作者很懒,什么都没留下…
展开
-
每日题解:LeetCode 179. 最大数
题目地址题目描述给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10"解法class Solution { publi原创 2021-04-12 22:39:56 · 209 阅读 · 0 评论 -
每日题解:LeetCode 241. 为运算表达式设计优先级
题目地址个人博客地址题目描述定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -1原创 2020-08-27 22:41:07 · 214 阅读 · 0 评论 -
每日题解:LeetCode 1008. 先序遍历构造二叉树
题目地址个人博客地址题目描述返回与给定先序遍历 preorder 相匹配的二叉搜索树(binary search tree)的根结点。(回想一下,二叉搜索树是二叉树的一种,其每个节点都满足以下规则,对于 node.left 的任何后代,值总 < node.val,而 node.right 的任何后代,值总 > node.val。此外,先序遍历首先显示节点的值,然后遍历 node.left,接着遍历 node.right。)示例:输入:[8,5,1,7,10,12]输出:[8,5,1原创 2020-08-19 20:57:48 · 173 阅读 · 0 评论 -
每日题解:LeetCode 109. 有序链表转换二叉搜索树
题目地址个人博客地址题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5解法class Solution {publi原创 2020-08-18 21:03:21 · 266 阅读 · 0 评论 -
每日题解:LeetCode 43. 字符串相乘
题目地址个人博客地址题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用原创 2020-08-13 22:43:07 · 187 阅读 · 0 评论 -
每日题解:LeetCode 901. 股票价格跨度
题目地址个人博客地址题目描述编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。示例:输入:["StockSpanner","next","next","next","next","next","ne原创 2020-08-07 22:28:21 · 353 阅读 · 0 评论 -
每日题解:LeetCode 1190. 反转每对括号间的子串
题目地址个人博客地址题目描述解法解题思路原创 2020-08-06 20:43:00 · 580 阅读 · 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 · 611 阅读 · 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 · 195 阅读 · 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 · 380 阅读 · 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 · 162 阅读 · 1 评论 -
每日题解:LeetCode 120. 三角形最小路径和
题目地址个人博客地址题目描述解法解题思路原创 2020-07-14 22:28:31 · 167 阅读 · 0 评论 -
每日题解:LeetCode 174. 地下城游戏
题目地址个人博客地址题目描述一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值原创 2020-07-12 23:07:59 · 302 阅读 · 0 评论 -
每日题解:LeetCode 112. 路径总和
题目地址个人博客地址题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的原创 2020-07-07 22:20:15 · 188 阅读 · 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 · 145 阅读 · 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 · 229 阅读 · 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 · 146 阅读 · 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 · 213 阅读 · 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 · 245 阅读 · 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 · 153 阅读 · 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 · 303 阅读 · 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 · 204 阅读 · 0 评论 -
每日题解:LeetCode 1487. 保证文件名唯一
题目地址个人博客地址题目描述给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数 。返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。示例 1:输入:names = ["pes",原创 2020-06-26 22:42:23 · 495 阅读 · 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 · 172 阅读 · 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 · 176 阅读 · 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 · 183 阅读 · 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 · 294 阅读 · 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 · 208 阅读 · 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 · 540 阅读 · 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 · 144 阅读 · 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 · 247 阅读 · 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 · 183 阅读 · 0 评论 -
每日题解:LeetCode 14. 最长公共前缀
题目地址个人博客地址题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解法JAVApublic class Solution { public String longestCommonPref原创 2020-06-15 22:04:30 · 188 阅读 · 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 · 175 阅读 · 0 评论 -
每日题解:LeetCode 15. 三数之和
题目地址个人博客地址题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解法JAVAclass Solution { public List<List&l原创 2020-06-13 21:00:00 · 161 阅读 · 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 · 384 阅读 · 0 评论 -
每日题解:LeetCode 9. 回文数
题目地址个人博客地址题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?解法JAVApublic c原创 2020-06-10 22:04:11 · 158 阅读 · 0 评论 -
每日题解:LeetCode 128. 最长连续序列
题目地址个人博客地址题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。解法JAVAclass Solution { public int longestConsecutive(int[] nums) {Set<Integer> set=new HashSet<>();原创 2020-06-06 21:02:18 · 201 阅读 · 0 评论 -
每日题解:LeetCode 面试题29. 顺时针打印矩阵
题目地址个人博客地址题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i]原创 2020-06-05 22:35:05 · 285 阅读 · 0 评论 -
每日题解:LeetCode 1457. 二叉树中的伪回文路径
题目地址个人博客地址题目描述给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。示例 1:输入:root = [2,3,1,3,1,null,1]输出:2 解释:上图为给定的二叉树。总共有 3 条从根到叶子的路径:红色路径 [2,3,3] ,绿色路径 [2,1,1] 和路径 [2,3,1] 。在这些路径中,只有红色和绿色的路径是伪回文路径原创 2020-06-01 22:57:22 · 300 阅读 · 0 评论