- 博客(49)
- 收藏
- 关注
原创 一刷完结撒花
首先,我本来就有计划打算刷题,因为早刷、晚刷都得刷,但是我却很担忧,因为我知道我的代码基础不是很好,还有很多东西没学,要非得说知道点啥的话,我只能说我就知道个数组,什么链表啊、哈希表、二叉树、贪心、动规...我连听都没听过,这就相当于啥?训练营的好处很多,首先,训练营会把每天要完成的任务给规划好发布下来,题量不是很多,能让人接受,也能让人更容易坚持下来,其次是因为有人陪伴会让自己更容易坚持下去,而且大家的学习氛围也很好,有哪里不会的,还会有人帮忙解答,还能锻炼自己写博客的能力。不会就从现在开始去学!
2023-09-09 18:23:03
1341
原创 Day60|leetcode 84.柱状图中最大的矩形
给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。
2023-09-09 12:39:21
328
原创 Day53|leetcode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和
给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:
2023-09-03 14:59:46
178
原创 Day52|leetcode 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,7,7,7,7,7]
2023-09-01 15:59:08
334
1
原创 Day51|leetcode 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
给定一个整数数组,其中第i表示第i天的股票价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
2023-08-31 19:41:46
184
原创 Day50|leetcode 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成。
2023-08-30 18:36:14
227
原创 Day49|leetcode 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II
给定一个数组 ,它的第 个元素 表示一支给定股票第 天的价格。
2023-08-29 18:11:03
316
原创 Day48|leetcode 198.打家劫舍、213.打家劫舍II、打家劫舍|||
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,
2023-08-28 21:18:02
795
原创 Day45|leetcode 70. 爬楼梯、322. 零钱兑换、279.完全平方数
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。示例 1:coins =[1, 2, 5], amount =113示例 2:coins =[2], amount =3-1示例 3:0给你一个整数n,返回和为n的完全平方数的最少数量。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1。
2023-08-26 13:08:59
469
原创 Day44|leetcode 518.零钱兑换II、377. 组合总和 Ⅳ
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+1示例 2:输入: amount = 3, coins = [2]输出: 0解释: 只用面额2的硬币不能凑成总金额3。示例 3:输入: amount = 10, coins = [10]输出: 1给你一个由不同。
2023-08-25 19:13:24
269
原创 Day43|leetcode 1049.最后一块石头的重量II、494.目标和、474.一和零
1049. 最后一块石头的重量 II - 力扣(LeetCode)动态规划之背包问题,这个背包最多能装多少?LeetCode:1049.最后一块石头的重量II_哔哩哔哩_bilibili有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x
2023-08-24 21:50:05
229
原创 Day42|leetcode 416. 分割等和子集
给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:true数组可以分割成 [1, 5, 5] 和 [11]。示例 2:false数组不能分割成两个元素和相等的子集。
2023-08-23 21:32:04
203
原创 Day41|leetcode 343. 整数拆分、96.不同的二叉搜索树
给定一个正整数n,将其拆分为k个正整数的和(k >= 2),并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例 1:输入:n = 2输出:1解释:示例 2:输入:n = 10输出:36解释:给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的二叉搜索树有多少种?返回满足题意的二叉搜索树的种数。示例 1:n = 35示例 2:n = 11。
2023-08-21 16:18:39
239
原创 Day39|leetcode 62.不同路径、63. 不同路径 II
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:28示例 2:3从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右 -> 向下示例 3:28一个机器人位于一个m x n。
2023-08-19 09:33:52
259
原创 Day38|leetcode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定n,请计算F(n)。示例 1:n = 21示例 2:n = 32假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:n = 33。
2023-08-18 19:19:15
345
原创 Day36|leetcode 435. 无重叠区间、763.划分字母区间、56. 合并区间
给定一个区间的集合intervals,其中。返回需要移除区间的最小数量,使剩余区间互不重叠。示例 1:1移除 [1,3] 后,剩下的区间没有重叠。示例 2:2你需要移除两个 [1,2] 来使剩下的区间没有重叠。给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。示例 1:[9,7,8]
2023-08-16 14:17:45
357
原创 Day35|leetcode 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始你手头没有任何零钱。给你一个整数数组bills,其中bills[i]是第i位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回false。示例 1:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
2023-08-15 10:56:50
388
原创 Day34|leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果
给你一个整数数组nums和一个整数k选择某个下标i并将nums[i]替换为-nums[i]。重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组可能的最大和。示例 1:5选择下标 1 ,nums 变为 [4,-2,3]。在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost。
2023-08-14 11:39:39
489
原创 Day32|leetcode 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。示例 1:7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。
2023-08-12 09:32:17
512
原创 Day31|leetcode 455.分发饼干、376. 摆动序列、53. 最大子序和
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果,我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:1你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。所以你应该输出1。
2023-08-11 17:15:11
533
原创 Day30|leetcode 51. N皇后、37.解数独
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个不同的n 皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。示例 1:n = 4如上图所示,4 皇后问题存在两个不同的解法。数独的解法需遵循如下规则数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9。
2023-08-10 11:30:52
463
原创 Day|29 leetcode 491.递增子序列、46.全排列、47.全排列 II
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1:输入:nums = [4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。
2023-08-09 10:33:50
570
原创 Day28|leetcode 93.复原IP地址、78.子集、90.子集II
有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。
2023-08-08 11:32:22
611
原创 Day27|leetcode 39. 组合总和、40.组合总和II、131.分割回文串
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target = 7。
2023-08-07 15:55:58
661
原创 Day25|leetcode 216.组合总和III、17.电话号码的字母组合
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:1.只使用数字1到9。2.每个数字 最多使用一次。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]解释:没有其他符合的组合了。给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
2023-08-05 18:23:46
736
原创 Day24| 回溯 leetcode 77.组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],
2023-08-04 15:17:52
760
原创 Day23|leetcode 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例 1:输入:root = [1,0,2], low = 1, high = 2输出:[1,null,2]
2023-08-03 11:43:57
813
原创 Day22|leetcode235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6。
2023-08-02 18:46:35
175
原创 Day21|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。示例 1:1给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树示例:给定 BST [1,null,2,2]返回[2]给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
2023-08-02 11:27:49
780
原创 Day|20 leetcode 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
给定一个不重复的整数数组构建最大二叉树,构建规则如下:1.根节点是最大值。2.在最大值左边的数用来构建左子树。3.在最大值右边的数用来构建右子树。示例 1:输入:nums = [3,2,1,6,0,5]输出:[6,3,5,null,2,0,null,null,1]给你两棵二叉树:想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会),如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值,否则,不为 null 的节点将直接作为新二叉树的节点。
2023-08-01 11:46:37
158
1
原创 Day18|leetcode 513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树
给定一个二叉树的根节点root,请找出该二叉树的最底层 最左边节点的值。假设二叉树中至少有一个节点。示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则,返回 false。
2023-07-31 19:27:06
1068
1
原创 Day17|leetcode 110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和
因为高度是从下到上去查,所以要左右中的依次往上遍历,而求深度是从上到下去查,所以先中间,再左右,要中左右依次往下遍历。所以左叶子的定义为:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点。这道题需要找路径,自然是从上往下找,所以说要用前序(中左右),但是这道题也需要用到回溯,要知道回溯递归是一家。平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。需要注意的是,想要判断子节点是不是左叶子,必须是遍历到父节点的时候才能判断!
2023-07-29 13:11:17
1187
原创 Day16|leetcode 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树点节点个数
例如说一个二叉树,它的子树其中一个为空,另一个子树不为空,那么它的最小深度不是1。千万不要把求二叉树最大深度的max改成min,如果这么求的话,没有左孩子的分支会算为最短深度。还有一种情况需要注意:就是深度相等,but不是完全二叉树(也不是满二叉树)!在完全二叉树中,递归向左遍历和向右遍历的深度相等,就证明是满二叉树,不等就不是满二叉树。本题求二叉树的最大深度实际上就是求高度(根节点的高度就是二叉树的最大深度)。高度:二叉树里任意一个节点到叶子节点的距离。深度:二叉树里任意一个节点到根节点的距离。
2023-07-28 08:32:00
1212
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人