leetcode
xiongxyowo
这个作者很懒,什么都没留下…
展开
-
leetcode 1154 一年中的第几天
https://leetcode-cn.com/problems/day-of-the-year/题目给你一个字符串datedatedate,按YYYY−MM−DDYYYY-MM-DDYYYY−MM−DD格式表示一个现行公元纪年法日期。请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。示例1输入:date = "2019-01-09"输出:9示例2输入:da原创 2021-12-21 10:57:53 · 113 阅读 · 0 评论 -
leetcode 997 找到小镇的法官
https://leetcode-cn.com/problems/find-the-town-judge/题目在一个小镇里,按从111到nnn为nnn个人进行编号。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足条件 1 和条件 2 。给定数组 trust,该数组由信任对trust[i]=[a,b]trust[i] = [a, b]trust[i]=[a,b]组成,表示编号为aaa的人原创 2021-12-19 12:01:29 · 138 阅读 · 0 评论 -
leetcode 1518 换酒问题
https://leetcode-cn.com/problems/water-bottles/题目小区便利店正在促销,用numExchangenumExchangenumExchange个空酒瓶可以兑换一瓶新酒。你购入了numBottlesnumBottlesnumBottles瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。示例1输入:numBottles = 9, numExchange = 3输出:13解释:你可以用 3 个空酒瓶兑换 1 瓶酒。所以原创 2021-12-17 09:31:23 · 116 阅读 · 0 评论 -
leetcode 506 相对名次
https://leetcode-cn.com/problems/relative-ranks/题目给你一个长度为nnn的整数数组scorescorescore,其中score[i]score[i]score[i]是第iii位运动员在比赛中的得分。所有得分都互不相同。运动员将根据得分决定名次,其中名次第111的运动员得分最高,名次第222的运动员得分第222高,依此类推。运动员的名次决定了他们的获奖情况:名次第 1 的运动员获金牌 “Gold Medal” 。名次第 2 的运动员获银牌 “Sil原创 2021-12-02 09:48:05 · 111 阅读 · 0 评论 -
leetcode 1446 连续字符
https://leetcode-cn.com/problems/consecutive-characters/题目给你一个字符串sss,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例1输入:s = "leetcode"输出:2解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。示例2输入:s = "abbcccddddeeeeedcba"输出:5解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。示例3输入原创 2021-12-01 21:34:56 · 208 阅读 · 0 评论 -
leetcode 786 第K个最小的素数分数
https://leetcode-cn.com/problems/k-th-smallest-prime-fraction/题目给你一个按递增顺序排序的数组arr和一个整数k。数组arr由1和若干素数组成,且其中所有整数互不相同。对于每对满足0 < i < j < arr.length的i和j,可以得到分数arr[i] / arr[j]。那么第k个最小的分数是多少呢? 以长度为2的整数数组返回你的答案, 这里answer[0] == arr[i] 且 answer[1] == a原创 2021-11-29 10:07:31 · 309 阅读 · 0 评论 -
leetcode 700 二叉搜索树的搜索
https://leetcode-cn.com/problems/search-in-a-binary-search-tree/题目给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值:2你应该返回如下子树: 2 / \ 1 3在上原创 2021-11-26 09:50:02 · 203 阅读 · 0 评论 -
leetcode 423 从英文中重建数字
https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/题目给你一个字符串s,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按升序返回原始的数字。示例1输入:s = "owoztneoer"输出:"012"注:s可以调整顺序为"zeroonetwo",即012示例2输入:s = "fviefuro"输出:"45"注:s可以调整顺序为"fourfive",即45思路1比较奇葩的一原创 2021-11-24 13:52:55 · 87 阅读 · 0 评论 -
leetcode 859 亲密字符串
https://leetcode-cn.com/problems/buddy-strings/题目给你两个字符串s和goal,只要我们可以通过交换s中的两个字母得到与goal相等的结果,就返回true;否则返回false。交换字母的定义是:取两个下标i和j(下标从 0 开始)且满足i != j,接着交换s[i]和s[j]处的字符。例如,在"abcd"中交换下标0和下标2的元素可以生成"cbad"。示例1输入:s = "ab", goal = "ba"输出:true解释:你可以交换 s[0]原创 2021-11-23 10:29:06 · 292 阅读 · 0 评论 -
leetcode 384 打乱数组
https://leetcode-cn.com/problems/shuffle-an-array/给你一个整数数组nums,设计算法来打乱一个没有重复元素的数组。实现Solutionclass:Solution(int[] nums)使用整数数组nums初始化对象int[] reset()重设数组到它的初始状态并返回int[] shuffle()返回数组随机打乱后的结果示例1输入["Solution", "shuffle", "reset", "shuffle"][[[1, 2, 3原创 2021-11-22 09:49:19 · 653 阅读 · 0 评论 -
leetcode 559 N叉树的最大深度
https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/题目给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔。思路1其实对于二(N)叉树的这种基础题,只要用递归把问题建模出来就好。相比于二叉树而言,N叉树会多个用list存每个结点全部子节点的步骤:int maxDepth(Node* root) { if (root ==原创 2021-11-21 10:00:08 · 232 阅读 · 0 评论 -
leetcode 318 最大单词长度乘积
https://leetcode-cn.com/problems/maximum-product-of-word-lengths/题目给定一个字符串数组wordswordswords,找到length(word[i])∗length(word[j])length(word[i]) * length(word[j])length(word[i])∗length(word[j])的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回0。示例 1:输入:原创 2021-11-21 00:07:41 · 311 阅读 · 0 评论 -
leetcode 563 二叉树的坡度
https://leetcode-cn.com/problems/binary-tree-tilt/题目给定一个二叉树,计算整个树的坡度 。一个树的节点的坡度定义即为,该节点左子树的节点之和和右子树节点之和的差的绝对值。如果没有左子树的话,左子树的节点之和为0;没有右子树的话也是一样。空结点的坡度是0。整个树的坡度就是其所有节点的坡度之和。思路1这个算是非常经典的二叉树递归练习题了,直接对问题的定义建模就好。首先,似乎求左子树的节点之和,那么有:int sumLeft = dfs(node-原创 2021-11-20 23:18:17 · 238 阅读 · 0 评论 -
leetcode 594 最长和谐子序列
https://leetcode-cn.com/problems/longest-harmonious-subsequence/题目和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示例1:输入:nums = [1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是 [3,2,原创 2021-11-20 23:01:48 · 196 阅读 · 0 评论 -
leetcode 397 整数替换
https://leetcode-cn.com/problems/integer-replacement/题目给定一个正整数nnn ,你可以做如下操作:如果nnn是偶数,则用n/2n / 2n/2替换nnn 。如果nnn是奇数,则可以用n+1n + 1n+1或n−1n - 1n−1替换nnn 。nnn变为111所需的最小替换次数是多少?示例 1:输入:n = 8输出:3解释:8 -> 4 -> 2 -> 1示例 2:输入:n = 7输出:4解释:7 ->原创 2021-11-19 09:40:55 · 793 阅读 · 0 评论 -
[分治] leetcode 23 合并K个升序链表
[分治] leetcode 23 合并K个升序链表1.题目题目链接给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]2.分析2.1.直观解法为了求某种有效的组合,我们可以把所有可能的组合都列出来,然后逐个判断各个组合是否有效。这就原创 2020-10-31 16:32:05 · 217 阅读 · 0 评论 -
[DFS|剪枝] leetcode 22 括号生成
[DFS|剪枝] leetcode 22 括号生成1.题目题目链接数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]2.分析2.1.直观解法为了求某种有效的组合,我们可以把所有可能的组合都列出来,然后逐个判断各个组合是否有效。这就是所谓的暴原创 2020-10-29 14:12:42 · 190 阅读 · 0 评论 -
[递归|迭代] leetcode 21 合并两个有序链表
[递归|迭代] leetcode 21 合并两个有序链表1.题目题目链接将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->42.分析2.1.直观解法还是类似于归并排序中的合并过程,利用两个指针分别遍历两个链表,比较当前两个节点中数的大小,将较小的数加入新链表即可。ListNode* mergeTwoLists(L原创 2020-10-28 08:57:09 · 160 阅读 · 0 评论 -
[链表|多解法] leetcode 19 删除链表的倒数第N个节点
[链表|多解法] leetcode 19 删除链表的倒数第N个节点1.题目题目链接给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?2.分析2.1.直观解法既然要删除倒数第N个结点,那么统计出链表总共有多少个结点,然后就可以找到倒数第原创 2020-10-27 12:14:45 · 133 阅读 · 0 评论 -
[DFS|回溯法] leetcode 17 电话号码的字母组合
[DFS|回溯法] leetcode 17 电话号码的字母组合1.题目题目链接给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。2.分析2.1.回溯法看到题干中的能表示的组合字样,我们的第一原创 2020-10-26 14:21:37 · 239 阅读 · 0 评论 -
[双指针|模拟] leetcode 15 三数之和
[模拟] leetcode 15 三数之和1.题目题目链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。2.分析2.1.模拟思路该题最简单的思路即为模拟我们手工计算最长公共前缀的过程:首先比较每个字符串的第一个字符,观察是否均相等;再比较每个字符串的第二原创 2020-10-25 13:32:26 · 87 阅读 · 0 评论 -
[模拟] leetcode 14 最长公共前缀
[模拟] leetcode 14 最长公共前缀1.题目题目链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。2.分析2.1.模拟思路该题最简单的思路即为模拟我们手工计算最长公共前缀的过程:首先比较每个字符串的第一个字符,观察是否均相等;再比较每个字符串的原创 2020-10-23 19:33:46 · 88 阅读 · 0 评论 -
[贪心|双指针] leetcode 11 盛最多水的容器
[贪心|双指针] leetcode 11 盛最多水的容器1.题目题目链接给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明: 你不能倾斜容器,且 n 的值至少为 2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在原创 2020-10-23 19:09:16 · 248 阅读 · 0 评论 -
[动态规划] leetcode 10 正则表达式匹配
[动态规划] leetcode 10 正则表达式匹配1.题目题目链接给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "原创 2020-10-22 10:17:25 · 229 阅读 · 0 评论 -
[模拟|数位] leetcode 9 回文数
[模拟|数位] leetcode 9 回文数1.题目题目链接判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。2.分析2.1.整数反转整数反转题解本题考察的还是原创 2020-10-21 10:18:24 · 86 阅读 · 0 评论 -
[DFA|有限状态机] leetcode 8 字符串转换整数(atoi)
[DFA|有限状态机] leetcode 8 字符串转换整数(atoi)1.题目题目链接请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符原创 2020-10-20 10:59:50 · 221 阅读 · 0 评论 -
[模拟|数位] leetcode 7 整数反转
[模拟|数位] leetcode 7 整数反转1.题目题目链接给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。2.分析2.1.除法运算可以屏蔽整数的低位,保留高位。例如123原创 2020-10-19 14:36:42 · 107 阅读 · 0 评论 -
[模拟|字符串] leetcode 6 Z字形变换
[模拟|字符串] leetcode 5 Z字形变换1.题目题目链接将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。示例1:输入: s = "LEETCODEISHIRING", numRows = 3原创 2020-10-19 13:22:46 · 137 阅读 · 0 评论 -
[动态规划|字符串] leetcode 5 最长回文子串
[动态规划|dp] leetcode 5 最长回文子串1.题目题目链接给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2:输入: "cbbd"输出: "bb"2.分析2.1.如何遍历子串寻找一个最长的回文子串本质上还是寻找一个特殊的“子串”,那么首先需要解决的是如何遍历子串的问题。//当前子串长度为len+1for (int len = 0; l原创 2020-10-19 09:45:12 · 97 阅读 · 0 评论 -
[二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数
[贪心|字符串] leetcode 4 寻找两个正序数组的中位数1.题目题目链接给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶: 你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例2:输入:nums1 = [1,2], nums2 = [3,4]输出:原创 2020-10-18 17:07:17 · 140 阅读 · 0 评论 -
[贪心|字符串] leetcode 3 无重复字符的最长子串
[链表遍历|模拟] leetcode 3 无重复字符的最长子串1.题目题目链接给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807原创 2020-10-17 23:49:01 · 205 阅读 · 0 评论 -
[链表遍历|模拟] leetcode 2 两数相加
[链表遍历|模拟] leetcode 2 两数相加1.题目题目链接给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 8072.分析原创 2020-10-16 11:19:52 · 149 阅读 · 0 评论 -
[hashmap|空间换时间] leetcode 1 两数之和
[位运算|状态压缩]leetcode 1 两数之和1.题目题目链接给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]2.分析2.1.第一印象第一眼的想法为“暴力求解”,即利用两层fo原创 2020-10-15 20:02:52 · 366 阅读 · 0 评论 -
[二叉树|深搜|dfs] leetcode 404 左叶子之和
[二叉树|深搜|dfs] leetcode 404 左叶子之和1.题目题目链接计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 242.分析2.1.怎么判断左叶子首先得判断是否为叶子。叶子的左子结点与右子结点均为空,因此有:bool isLeaf(TreeNode* node) { return !node->left && !原创 2020-09-24 08:59:38 · 151 阅读 · 0 评论 -
[二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树
[二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树1.题目题目链接给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \原创 2020-09-21 12:33:31 · 105 阅读 · 0 评论 -
[位运算|状态压缩] leetcode 78 子集
[位运算|状态压缩]leetcode 78 子集1.题目题目链接给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]2.分析2.1.状态串二进制字符串可以用来表示状态。例如,有编号为1,2,3,4,5的五个灯泡,那么第2个灯泡与第5个灯泡打开便可以记原创 2020-09-21 09:43:57 · 294 阅读 · 1 评论