![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode每日一题
文章平均质量分 67
七七不是七七七七
这个作者很懒,什么都没留下…
展开
-
LeetCode每日一题--228. 汇总区间(遍历)
题目:跳转至 228. 汇总区间给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:“a->b” ,如果 a != b“a” ,如果 a == b示例 1:输入:nums = [0,1,2,4,5,7]输出:[“0->2”,“4->5”,“7”]解释:区间原创 2021-01-21 23:02:41 · 120 阅读 · 0 评论 -
LeetCode每日一题--123. 买卖股票的最佳时机 III(动态规划)
题目:跳转至 123. 买卖股票的最佳时机 III给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:prices = [3,3,5,0,0,3,1,4]输出:6解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3原创 2021-01-21 00:23:19 · 121 阅读 · 0 评论 -
LeetCode每日一题--189. 旋转数组(数组)
题目:跳转至 189. 旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2原创 2021-01-19 23:02:31 · 119 阅读 · 0 评论 -
LeetCode每日一题--547. 省份数量(广度优先搜索 深度优先搜索 并查集)
题目:跳转至 547. 省份数量有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例原创 2021-01-19 21:07:00 · 223 阅读 · 0 评论 -
LeetCode每日一题--399. 除法求值(广度优先搜索 动态规划 带权并查集)
题目:跳转至 399. 除法求值思路:题目跟猜谜一样,对照示例进行理解,涉及到图就不灵光。原创 2021-01-11 01:39:01 · 165 阅读 · 0 评论 -
LeetCode每日一题--830. 较大分组的位置(遍历)
题目:跳转至 830. 较大分组的位置思路:原创 2021-01-10 22:41:14 · 100 阅读 · 1 评论 -
LeetCode每日一题--509. 斐波那契数(递归 动态规划)
题目:跳转至 509. 斐波那契数思路:原创 2021-01-10 22:34:21 · 111 阅读 · 0 评论 -
LeetCode每日一题--86. 分隔链表(链表)
题目:跳转至 86. 分隔链表思路:原创 2021-01-07 01:13:34 · 138 阅读 · 0 评论 -
LeetCode每日一题--239. 滑动窗口最大值(优先队列 单调队列)
题目:跳转至 239. 滑动窗口最大值思路:原创 2021-01-07 00:04:11 · 211 阅读 · 0 评论 -
LeetCode每日一题--605. 种花问题(贪心)
题目:跳转至 605. 种花问题思路:原创 2021-01-06 00:50:41 · 116 阅读 · 0 评论 -
LeetCode每日一题--435. 无重叠区间(贪心)
题目:跳转至 435. 无重叠区间思路:原创 2021-01-06 00:41:56 · 136 阅读 · 0 评论 -
LeetCode每日一题--1046. 最后一块石头的重量(优先队列 大顶堆)
题目:跳转至 1046. 最后一块石头的重量思路:原创 2021-01-05 00:22:04 · 189 阅读 · 0 评论 -
LeetCode每日一题--330. 按要求补齐数组(贪心)
题目:跳转至 330. 按要求补齐数组给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。示例 1:输入: nums = [1,3], n = 6输出: 1解释:根据 nums 里现有的组合 [1], [3], [1,3],可以得出 1, 3, 4。现在如果我们将 2 添加到 nums 中, 组合变为: [原创 2021-01-04 22:45:31 · 158 阅读 · 0 评论 -
LeetCode每日一题--188. 买卖股票的最佳时机 IV(动态规划)
题目:跳转至 188. 买卖股票的最佳时机 IV给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2原创 2021-01-03 23:50:03 · 148 阅读 · 0 评论 -
LeetCode每日一题--205. 同构字符串(哈希表)
题目:跳转至 205. 同构字符串给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示例 3:输入: s = “paper”, t = “title”输出:原创 2021-01-03 23:30:44 · 90 阅读 · 0 评论 -
LeetCode每日一题--85. 最大矩形(单调栈)
题目:跳转至 85. 最大矩形给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例 1:输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出:6解释:最大矩形如上图所示。示例 2:输入:matrix = []输出:0示例 3:输入:matrix = [[“0”]原创 2021-01-03 23:21:08 · 439 阅读 · 0 评论 -
LeetCode每日一题--455. 分发饼干(排序)
题目:跳转至 455. 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小原创 2020-12-25 23:40:08 · 166 阅读 · 0 评论 -
LeetCode每日一题--135. 分发糖果(两次遍历)
题目:跳转至 135. 分发糖果老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1原创 2020-12-24 23:03:10 · 279 阅读 · 0 评论 -
LeetCode每日一题--387. 字符串中的第一个唯一字符(计数)
题目:跳转至 387. 字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2提示:你可以假定该字符串只包含小写字母。class Solution {public: int firstUniqChar(string s) { }};思路:简单的有点恍惚,如果没有提示中只包含小写字母就哈希表,说了只有26位那就直接列表了。原创 2020-12-23 22:25:40 · 79 阅读 · 0 评论 -
LeetCode每日一题--103. 二叉树的锯齿形层序遍历(广度优先遍历)
题目:跳转至 103. 二叉树的锯齿形层序遍历给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 /原创 2020-12-22 22:29:03 · 88 阅读 · 0 评论 -
LeetCode每日一题--746. 使用最小花费爬楼梯(动态规划)
题目:跳转至 746. 使用最小花费爬楼梯数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。示例 2:输入: cost = [1,原创 2020-12-21 22:42:37 · 138 阅读 · 0 评论 -
LeetCode每日一题--316. 去除重复字母(单调栈)
题目:跳转至 316. 去除重复字母给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。**注意:**该题与 1081 相同示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbacdcbc”输出:“acdb”提示:1 <= s.length <= 104s 由小写英文字母组成class Solution {public: string re原创 2020-12-21 00:00:50 · 183 阅读 · 0 评论 -
LeetCode每日一题--48. 旋转图像(矩阵)
题目:跳转至 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:给定 ma原创 2020-12-20 00:23:41 · 107 阅读 · 1 评论 -
LeetCode每日一题--389. 找不同(计数,位运算)
题目:跳转至 389. 找不同给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”示例 3:输入:s = “a”, t = “aa”输出:“a”示例 4:输入:s = “ae”, t = “aea”输出:“a”提示:0原创 2020-12-18 22:00:45 · 148 阅读 · 2 评论 -
LeetCode每日一题--714. 买卖股票的最佳时机含手续费(动态规划 贪心)
题目:跳转至 714. 买卖股票的最佳时机含手续费给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意: 这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出:原创 2020-12-17 22:04:18 · 259 阅读 · 0 评论 -
LeetCode每日一题--290. 单词规律(哈希表)
题目:跳转至 290. 单词规律给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = “abba”, str = “dog cat cat dog”输出: true示例 2:输入:pattern = “abba”, str = “dog cat cat fish”输出: false示例 3:输入原创 2020-12-16 22:16:51 · 165 阅读 · 0 评论 -
LeetCode每日一题--738. 单调递增的数字(贪心)
题目:跳转至 738. 单调递增的数字给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例 1:输入: N = 10输出: 9示例 2:输入: N = 1234输出: 1234示例 3:输入: N = 332输出: 299说明: N 是在 [0, 10^9] 范围内的一个整数。class Solution {public原创 2020-12-15 22:36:59 · 520 阅读 · 0 评论 -
LeetCode每日一题--49. 字母异位词分组(哈希表)
题目:跳转至 49. 字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。class Solution {public: vector<vector<string>&原创 2020-12-14 22:28:27 · 101 阅读 · 0 评论 -
LeetCode每日一题--217. 存在重复元素(排序)
题目:跳转至 217. 存在重复元素给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass Solution {public: bool containsDuplicate(vector<原创 2020-12-13 22:14:54 · 85 阅读 · 0 评论 -
LeetCode每日一题--376. 摆动序列(贪心 动态规划)
题目:跳转至 376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序原创 2020-12-12 23:11:44 · 244 阅读 · 0 评论 -
LeetCode每日一题--860. 柠檬水找零(贪心)
题目:跳转至 860. 柠檬水找零在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取原创 2020-12-10 22:10:42 · 229 阅读 · 0 评论 -
LeetCode每日一题--62. 不同路径(数学,动态规划)
题目:跳转至 62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右原创 2020-12-10 21:26:30 · 172 阅读 · 0 评论 -
LeetCode每日一题--842. 将数组拆分成斐波那契序列(回溯,剪枝)
题目:跳转至 842. 将数组拆分成斐波那契序列给定一个数字字符串 S,比如 S = “123456579”,我们可以将它分成斐波那契式的序列 [123, 456, 579]。形式上,斐波那契式序列是一个非负整数列表 F,且满足:0 <= F[i] <= 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型);F.length >= 3;对于所有的0 <= i < F.length - 2,都有 F[i] + F[i+1] = F[i+2] 成立。原创 2020-12-08 22:33:56 · 380 阅读 · 0 评论 -
LeetCode每日一题--861. 翻转矩阵后的得分(数学)
题目:跳转至 861. 翻转矩阵后的得分有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。示例:输入:[[0,0,1,1],[1,0,1,0],[1,1,0,0]]输出:39解释:转换为 [[1,1,1,1],[1,0,0,1],[1,1,1,1]]0b1111 + 0b原创 2020-12-07 16:26:04 · 198 阅读 · 2 评论 -
LeetCode每日一题--621. 任务调度器(哈希表)
题目:跳转至 621. 任务调度器给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = [“A”,“原创 2020-12-07 02:14:11 · 320 阅读 · 0 评论 -
LeetCode每日一题--118. 杨辉三角(数学)
题目:跳转至 118. 杨辉三角给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]class Solution {public: vector<vector<int>> generate(int numRows) { }};思路:简单题就数学原创 2020-12-07 00:28:04 · 134 阅读 · 0 评论 -
LeetCode每日一题--659. 分割数组为连续子序列(哈希表 最小堆 贪心)
题目:跳转至 659. 分割数组为连续子序列给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。如果可以完成上述分割,则返回 true ;否则,返回 false 。示例 1:输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两个连续子序列 :1, 2, 33, 4, 5示例 2:输入: [1,2,3,3,4,4,5,5]输出: True解释:你可以分割出这样两个连续子序原创 2020-12-07 00:23:24 · 199 阅读 · 0 评论 -
LeetCode每日一题--976. 三角形的最大周长(数学)
题目:跳转至 976. 三角形的最大周长给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8提示:3 <= A.length <= 100001 <= A[i] <= 10^6class Sol原创 2020-12-04 01:13:04 · 91 阅读 · 0 评论 -
LeetCode每日一题--204. 计数质数(数学)
题目:跳转至 204. 计数质数统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <=n <= 5 * 106class Solution {public: int countPrimes(int n) { }};思路:想了一秒钟质数是啥,加额外原创 2020-12-03 23:27:22 · 109 阅读 · 0 评论 -
LeetCode每日一题--321. 拼接最大数(单调栈)
题目:跳转至 321. 拼接最大数给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。说明: 请尽可能地优化你算法的时间和空间复杂度。示例 1:输入:nums1 = [3, 4, 6, 5]nums2 = [9, 1, 2, 5, 8, 3]k =原创 2020-12-03 17:39:45 · 258 阅读 · 0 评论