自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 Day60 柱状图中最大的矩形

个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。思路:使用left、right分别记录每个元素左边比它小和右边比它小的位置。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2024-06-02 15:21:06 117

原创 Day59 下一个更大元素Ⅱ + 接雨水

给定一个循环数组nums的下一个元素是nums[0]),返回 nums中每个元素的。数字x的是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。思路:把两个数组拼接在一起,即可转换为上一题,但本题并不需要真正拼接,只需要遍历两次nums即可。

2024-06-02 15:03:03 198

原创 Day57 每日温度 + 下一个更大元素Ⅰ

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。思路:本题为单调栈的经典习题,递减栈(区分递增还是递减可以模拟执行,看什么时候需要放数据),因此当前温度高于栈顶时,可给result赋值。

2024-06-01 16:20:40 302

原创 Day56 回文子串 + 最长回文子序列

给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。思路:dp[i][j]表示[i,j]子串是否为回文串。因此,若s[i] == s[j],则dp[i][j]由dp[i + 1][j - 1]转换而来bool。

2024-06-01 16:17:52 148

原创 Day55 两个字符串的删除操作 + 编辑距离

给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。每步 可以删除任意一个字符串中的一个字符。思路:本题与求最长公共子序列几乎相同,只是最终的答案是记录原字符串变为公共子序列的步数。int。

2024-06-01 16:15:30 283

原创 Day54 判断子序列 + 不同的子序列

给定字符串和,判断是否为的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?思路:本题可使用双指针分别遍历s、t来进行判断,这里不使用该方法,使用动态规划方法获取s和t的最长公共子序列长度,判断是否与s的长度一致。int。

2024-06-01 16:10:53 279

原创 Day53 最长公共子序列 + 不相交的线 + 最大子数组和

给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。思路:本题和上题的区别是,上题的子数组是连续的,本题是可以不连续的。本题仅转移方程存在一些区别。int。

2024-05-29 21:37:32 378

原创 Day52 最长递增子序列 + 最长连续递增序列 + 最长重复子数组

题目链接:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。思路:dp[i]为考虑到第i个元素的最长子序列。只需要遍历i之前比nums[i]小的,进行更新即可。本题需使用一个result记录下最长的,否则输出5,而是6。

2024-05-29 21:35:38 251

原创 Day50 买卖股票的最佳时机(冷冻期 + 手续费)

给定一个整数数组prices,其中第prices[i]表示第_i_天的股票价格。​设计一个算法计算出最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路:本题与之前股票题类似,但本题在买入的时候需要考虑i-2天为不持有的状态。int。

2024-05-25 23:05:28 340

原创 Day49 买卖股票的最佳时机 3 & 4

给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成交易。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路:使用dp数组,表示不同的状态,具体看代码。int。

2024-05-25 22:53:20 289

原创 Day48买卖股票的最佳时机1&2

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。思路:使用动态规划方式,0表示不持有,1表示持有,写出递推方程即可。int。

2024-05-23 09:54:50 187

原创 Day47 打家劫舍123

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。int本题也可以使用一维dp。

2024-05-23 09:37:52 448

原创 Day46 单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。若存在j(j < i),使得[j,i-1]出现在字典中,则dp[i]转换为dp[j]。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。另外,本题是排列,因此需要先遍历背包,后遍历字典。dp[i]:遍历到第i个字符是否能被字典拆分。思路:本题的关键就是如何定义dp和如何递推。

2024-05-23 09:35:24 236

原创 Day45 零钱兑换 + 完全平方数

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。思路:本题是完全背包问题,dp[i]表示凑成i的最少的硬币个数。

2024-05-20 09:46:40 617

原创 Day43 零钱兑换Ⅱ + 组合总数Ⅳ

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。思路:本题与494目标和转换出来的背包问题类似,只是本题是完全背包问题,遍历改为正序即可。

2024-05-19 17:03:08 618

原创 Day42 最后一块石头的重量Ⅱ + 目标和 + 一和零

有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量。如果没有石头剩下,就返回 0。

2024-05-19 16:04:17 579

原创 Day41 分割等和子集

但使得总和恰好为sum/2,有点不清楚dp数组怎么转移了,其实本题中总和既是weight,也是value,因此,判断dp[sum/2]是否等于sum/2即可。本题很容易想到,先获取数组总sum,然后sum/2,从原数组中选数,使得总和恰好为sum/2。因此,原问题就变为01背包问题。给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。本题使用了一维dp,建议先学习。

2024-05-16 16:14:46 670

原创 Day40 整数拆分 + 不同的二叉搜索树

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。思路:对于任意一个数,可被拆为2个及两个以上的情况。i被拆分后最大的整数乘积对于dp[i],我们可以分别从j开始拆分,每个需判断拆分为2个和2个以上哪个更大。同时,对于一个数,最大的是拆分为多个尽可能差不多的数字,因此,拆分为2个,最大的j为i/2,而更多的拆分比i/2更小,因此j只需遍历到i/2即可。

2024-05-16 14:38:48 437

原创 Day39 不同路径 + 不同路径Ⅱ

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?思路:二维dp,第一行和第一列均为1,其余为int。

2024-05-14 13:36:54 560

原创 Day38 斐波那契数 + 爬楼梯 + 使用最小花费爬楼梯

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n)。

2024-05-13 13:52:21 634

原创 Day36 单调递增的数字 + 监控二叉树

题目链接:https://leetcode.cn/problems/monotone-increasing-digits/description/当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增。从右向左不断找不满足递增条件的数字,将不满足的数字-1,最后一个数字后面的数字都改为9。例如332,分别变为322、222、299。

2024-05-10 15:32:04 264

原创 Day35 无重叠区间 + 划分字母区间 + 合并区间

给定一个区间的集合intervals,其中。返回需要移除区间的最小数量,使剩余区间互不重叠。思路:本题与上一题452类似,首先对区间排序,排序后需判断是否重叠,需进行移除,对于重叠的,保留右区间最短的,这样后续可以更少移除。

2024-05-10 14:21:23 654

原创 Day34 柠檬水找零 + 根据身高重建队列 + 用最少数量的箭引爆气球

在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始你手头没有任何零钱。给你一个整数数组bills,其中bills[i]是第i位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回false。思路:使用map记录每种零钱的个数,并试图找零即可,若找不开,就false。

2024-05-09 10:51:20 974

原创 Day33 K次取反后最大化的数组和 + 加油站 + 分发糖果

给你一个整数数组nums和一个整数kinums[i]-nums[i]重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组。思路:将原数组排序,所有的负数都变为正数。若此时k为奇数,则选择最小的变为负数。

2024-05-08 13:43:36 510

原创 Day32 买卖股票的最佳时机Ⅱ + 跳跃游戏 + 跳跃游戏Ⅱ

给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。思路:对于,最大利润为5 - 1,等于(5 - 4) + (4 - 3) + (3 - 2) + (2 - 1)。故只需要加上所有大于0的。

2024-05-07 16:57:11 377

原创 Day31 分发饼干 + 摆动序列 + 最大子数组和

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果,我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。思路:将s和g排序,从右到左遍历,依次满足各个孩子的胃口,不满足的时候去胃口更小的孩子判断。

2024-05-07 13:55:44 371

原创 Day30 重新安排行程 + N皇后 + 解数独

给你一份航线列表tickets,其中表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。思路:本题有点难,主要是学习了代码随想录的方法。使用记录(出发机场,目的机场,次数)。

2024-05-06 18:32:36 295

原创 Day29 非递减子序列 + 全排列 + 全排列Ⅱ

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。序列递增时才加入到path中,因此对于非递增的情况,进行剪枝。同时,为了避免重复,如[4,6,7(2)]和[4,6,7(3)],括号表示对应元素的下标,设置了一个set集合,标记本层是否遍历某个元素。

2024-05-06 13:44:31 252

原创 Day28 复原IP地址 + 子集 + 子集Ⅱ

正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。思路:使用回溯法,注意需要剪枝的情况。(1)取得的字符串大于3个(2)取得的字符串对应的数字不在[0,255]之间(3)取得的字符串全面包含多余的0,如025。

2024-04-30 13:49:49 319

原创 Day27 组合总数 + 组合总数Ⅱ + 分割回文串

给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。思路:使用回溯法,由于本题同一个数字可被重复选取,因此对于第i层,下一层还是从i开始遍历。终止条件就是sum >= target,从而避免无限递归。

2024-04-29 21:01:22 234

原创 Day25 组合总数Ⅲ + 电话号码的字母组合

找出所有相加之和为n的k返回所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

2024-04-28 09:59:45 279

原创 Day24 组合

给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。

2024-04-26 17:53:37 314

原创 Day23 修剪二叉搜索树 + 将有序数组转换为二叉搜索树 + 把二叉搜索树转换为累加树

给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。思路:本题较复杂,建议查看以下题解讲解和视频。

2024-04-25 15:36:17 350

原创 Day22 二叉搜索树的最近公共祖先 + 二叉搜索树中的插入操作 + 删除二叉搜索树的节点

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。思路:本题是二叉搜索树,因此可以利用相关特性。

2024-04-24 22:26:31 330

原创 Day21 二叉搜索树的最小绝对差 + 二叉搜索树中的众数 + 二叉树的最近公共祖先

给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。由于是二叉搜索树,所以中序遍历是有序的,只需要比较相邻两个元素的差值是否最小即可,因此需要保存一个pre节点。

2024-04-24 12:34:59 404

原创 Day20 最大二叉树 + 合并二叉树 + 二叉搜索树中的搜索 + 验证二叉搜索树

给定一个不重复的整数数组nums。可以用下面的算法从numsnums返回 nums构建的最大二叉树。使用一个helper函数,确定待构造的下标开始(start)和终止(end),每次找最大值,使用前序遍历构造根节点,再根据新的start和end构造左右子树。后续待学习方法:单调栈。

2024-04-23 23:07:04 385

原创 Day18 找树左下角的值 + 路径总和 + 构造二叉树

给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。

2024-04-21 10:21:07 528 1

原创 Day17 平衡二叉树 + 二叉树的所有路径 + 左叶子之和

给定一个二叉树,判断它是否是平衡二叉树。

2024-04-19 16:58:12 152 1

原创 Day16 二叉树的最大深度 + 二叉树的最小深度 + 完全二叉树的节点个数

给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。

2024-04-18 15:53:55 347 2

原创 Day15 二叉树的层序遍历 + 翻转二叉树 + 对称二叉树

给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。思路:使用队列实现广度优先搜索。

2024-04-17 11:37:49 284

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除