自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 12.3 代码随想录Day49打卡(单调栈)

个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。42. 接雨水(高频题!42. 接雨水(高频题!84.柱状图中最大的矩形。

2024-12-03 13:05:05 163

原创 12.2 代码随想录Day48打卡(单调栈)

是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。如果不存在下一个更大元素,那么本次查询的答案是。,表示每天的温度,返回一个数组。496.下一个更大元素 I。503.下一个更大元素II。

2024-12-02 10:21:21 282

原创 11.30 代码随想录Day46打卡(动态规划)

找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。是字符串中的由连续字符组成的一个序列。是正着读和倒过来读一样的字符串。,请你统计并返回这个字符串中。516.最长回文子序列。

2024-11-29 22:28:06 200

原创 11.29 代码随想录Day45打卡(动态规划)

你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符。可以删除任意一个字符串中的一个字符。583. 两个字符串的删除操作。115.不同的子序列。115.不同的子序列。题目:给你两个字符串。

2024-11-28 22:16:13 196

原创 11.28 代码随想录Day44打卡(动态规划)

是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。以这种方法绘制线条,并返回可以绘制的最大连线数。在两条独立的水平线上按给定的顺序写下。是这两个字符串所共同拥有的子序列。,返回这两个字符串的最长。1143.最长公共子序列。是数组中的一个连续部分。

2024-11-27 22:08:13 256

原创 11.27 代码随想录Day43打卡(动态规划)

是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。题目:给定一个未经排序的整数数组,找到最长且。,找到其中最长严格递增子序列的长度。、长度最长的子数组的长度。674. 最长连续递增序列。718. 最长重复子数组。题目:给一个整数数组。,并返回该序列的长度。)确定,如果对于每个。就是连续递增子序列。题目:给两个整数数组。

2024-11-27 10:24:52 333

原创 11.26 代码随想录Day42打卡(动态规划)

代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。设计一个算法来计算你所能获取的最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。714.买卖股票的最佳时机含手续费。188.买卖股票的最佳时机IV。188.买卖股票的最佳时机IV。是某支给定的股票在第。

2024-11-26 10:51:56 347

原创 11.25 代码随想录Day41打卡(动态规划)

设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。在每一天,你可以决定是否购买和/或出售股票。设计一个算法来计算你所能获取的最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。123.买卖股票的最佳时机III。122.买卖股票的最佳时机II。你也可以先购买,然后在。个元素是一支给定的股票在第。121. 买卖股票的最佳时机。121. 买卖股票的最佳时机。买入这只股票,并选择在。给定一个数组,它的第。

2024-11-25 19:51:55 273

原创 11.23 代码随想录Day39打卡(动态规划)

一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,小偷又发现了一个新的可行窃的地区。给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。,今晚能够偷窃到的最高金额。

2024-11-25 19:44:05 284

原创 11.22 代码随想录Day38打卡(动态规划)

是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。如果可以利用字典中出现的一个或多个单词拼接出。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回。,表示不同面额的硬币;的完全平方数的最少数量。

2024-11-21 21:58:22 226

原创 11.21 代码随想录Day37打卡(动态规划)

小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的重量,并且具有不同的价值。小明的行李箱所能承担的总重量是有限的,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。第一行包含两个整数,n,v,分别表示研究材料的种类和行李所能承担的总重量 接下来包含 n 行,每行两个整数 wi 和 vi,代表第 i 种研究材料的重量和价值。输出描述:输出一个整数,表示爬到楼顶的方法数。

2024-11-20 23:18:37 354

原创 11.20 代码随想录Day36打卡(动态规划)

然后将它们一起粉碎。假设石头的重量分别为。返回可以通过上述方法构造的、运算结果等于。1049. 最后一块石头的重量 II。1049. 最后一块石头的重量 II。,然后串联起所有整数,可以构造一个。的最大子集的长度,该子集中。如果没有石头剩下,就返回。向数组中的每个整数前添加。有一堆石头,用整数数组。给一个二进制字符串数组。

2024-11-19 21:15:11 278

原创 11.19 代码随想录Day35打卡(动态规划)

这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。输入描述:第一行包含两个正整数,第一个整数 M 代表研究材料的种类,第二个正整数 N,代表小明的行李空间。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。输出描述:输出一个整数,代表小明能够携带的研究材料的最大价值。416. 分割等和子集。

2024-11-18 23:13:08 255

原创 11.18 代码随想录Day34打卡(动态规划)

题目:一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?

2024-11-17 20:27:53 199

原创 11.16 代码随想录Day32打卡(动态规划)

开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1。个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。请你计算并返回达到楼梯顶部的最低花费。你有多少种不同的方法可以爬到楼顶呢?746. 使用最小花费爬楼梯。表示)形成的序列称为。509. 斐波那契数。

2024-11-16 11:21:53 197

原创 11.15 代码随想录Day31打卡(贪心算法)

题目:以数组 表示若干个区间的集合,其中单个区间为 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。题解:与射气球类似,先排序再更新区间边界。738.单调递增的数字题目:当且仅当每个相邻位数上的数字 和 满足 时,我们称这个整数是单调递增的。给定一个整数 ,返回 小于或等于 的最大数字,且数字呈 单调递增 。题解:本题注意flag的意义,它记录从某一位开始往后都变成9(对于第二个for循环,所以初始值是等于字符串长度)。968.监

2024-11-15 11:35:16 182

原创 11.14 代码随想录Day30打卡(贪心算法)

我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组。你不知道气球的确切 y 坐标。处射出一支箭,若有一个气球的直径的开始和结束坐标为。需要移除区间的最小数量,使剩余区间互不重叠。返回一个表示每个字符串片段的长度的列表。452. 用最少数量的箭引爆气球。452. 用最少数量的箭引爆气球。可以射出的弓箭的数量。只在一点上接触的区间是。

2024-11-14 13:56:27 326

原创 11.13 代码随想录Day29打卡(贪心算法)

相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的。表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到。,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付。你从其中的一个加油站出发,开始时油箱为空。注意,一开始你手头没有任何零钱。表示队列中一些人的属性(不一定按顺序)。假设有打乱顺序的一群人站成一个队列,数组。顾客排队购买你的产品,(按账单。是排在队列前面的人)。

2024-11-13 16:38:18 290

原创 11.12 代码随想录Day28打卡(贪心算法)

3.若K>0,反复转变数值最小的元素,将K用完;题解:特殊情况:当前覆盖最远距离下标不是集合终点,步数+1,继续走;当前覆盖最远距离下标是集合终点,步数不+1,不往后走。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断是否能够到达最后一个下标,如果可以,返回。题解:注意i要在覆盖范围内移动,python不支持动态修改for循环中变量,使用while循环代替。在每一天,你可以决定是否购买和/或出售股票。向前跳转的最大长度。以这种方式修改数组后,返回数组。你也可以先购买,然后在。处,你可以跳转到任意。

2024-11-12 11:04:49 266

原创 11.11 代码随想录Day27打卡(贪心算法)

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为。,这是能让孩子们满足胃口的饼干的最小尺寸;贪心算法:用局部最优推出全局最优。是数组中的一个连续部分。

2024-11-11 14:23:02 254

原创 11.9 代码随想录Day25打卡(回溯算法)

组合问题:N个数里面按一定规则找出k个数的集合排列问题:N个数按一定规则全排列,有几种排列方式切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集棋盘问题:N皇后,解数独等等。

2024-11-09 14:25:10 270

原创 11.8 代码随想录Day24打卡(回溯算法)

题解:本题注意在每个节点都要收获结果,所以要把收获结果放在终止结果前(终止条件可以不写)。,其中可能包含重复元素,请你返回该数组所有可能的。,用以表示一个 IP 地址,返回所有可能的。返回的解集中,子集可以按。题解:本题是去重+节点处收获结果的结合。给定一个只包含数字的字符串。正好由四个整数(每个整数位于。题解:注意python语言特点。之间组成,且不能含有前导。返回该数组所有可能的。,这些地址可以通过在。题目:给一个整数数组。题目:给一个整数数组。

2024-11-08 19:05:40 155

原创 11.7 代码随想录Day23打卡(回溯算法)

题解:本题可分为两步:切割问题(切割到字符串的结尾位置停止)、判断回文。如果至少一个数字的被选数量不同,则两种组合是不同的。题解:要增加去重逻辑,且在最开始先对数组进行排序。中的每个数字在每个组合中只能使用。,并以列表形式返回。题解:注意本题元素可重复使用。分割成一些子串,使每个子串都是。中可以使数字和为目标数。给定一个候选人编号的集合。中所有可以使数字和为。所有可能的分割方案。

2024-11-07 11:14:05 282

原创 11.6 代码随想录Day22打卡(回溯算法)

该列表不能包含相同的组合两次,组合可以以任何顺序返回。个数的组合,且满足下列条件:只使用数字1到9;题解:转变为树形结构思考,可知树形结构的深度由k决定。的字符串,返回所有它能表示的字母组合。题解:先将数字和字母进行映射,再做处理。回溯算法的理论基础如下图。所有可能的有效组合的列表。17.电话号码的字母组合。题解:剪枝优化后的版本。216.组合总和III。

2024-11-06 10:39:36 212

原创 11.5 代码随想录Day21打卡(二叉树)

题解:注意修剪时对修剪节点的左右子树也需要进一步遍历,如修建节点小于low,对修剪节点的右子树继续遍历;改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。树的根节点,该树的节点值各不相同,请将其转换为累加树(Greater Sum Tree),使每个节点。所以结果应当返回修剪好的二叉搜索树的新的根节点。题解:选取数组最中间的数为根节点,分别构造左子树、右子树,区间选择为左闭右闭。涉及到二叉树的构造,无论普通二叉树还是二叉搜索树用前序,先构造中节点。

2024-11-05 10:26:07 241

原创 11.4 代码随想录Day20打卡(二叉树)

1.没找到删除的节点;2.删除节点为叶子节点(左空、右空);对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。返回插入后二叉搜索树的根节点。给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。,新值和原始二叉搜索树中的任意节点值都不同。235. 二叉搜索树的最近公共祖先。235. 二叉搜索树的最近公共祖先。给定二叉搜索树(BST)的根节点。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。给定一个二叉搜索树的根节点。,删除二叉搜索树中的。

2024-11-04 22:08:34 149

原创 11.2 代码随想录Day18打卡(二叉树)

公共祖先:对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。给一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。530.二叉搜索树的最小绝对差。530.二叉搜索树的最小绝对差。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。

2024-11-04 21:44:56 149

原创 11.1 代码随想录Day17打卡(二叉树)

2.用双指针,对当前节点和其前一个节点比较进行验证。(记录root和pre的关系,正确的关系是root>pre),返回合并后的二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;题解:选数组最大元素为根节点,用前序遍历(中左右)构造二叉树。返回以该节点为根的子树。题解:使用前序遍历(中左右)构造合成后的二叉树。null 的节点将直接作为新二叉树的节点。题目:给定二叉搜索树(BST)的根节点。,判断其是否是一个有效的二叉搜索树。题目:给一个二叉树的根节点。

2024-11-04 12:38:25 209

原创 10.31 代码随想录Day16打卡(二叉树)

的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。假设二叉树中至少有一个节点。路径总和等于给定目标和的路径。,请构造二叉树并返回其根节点。和一个表示目标和的整数。题目:给你二叉树的根节点。题目:给定一个二叉树的。题目:给二叉树的根节点。题目:给定两个整数数组。题目:给定两个整数数组。是二叉树的中序遍历,

2024-10-31 15:29:53 263

原创 10.30 代码随想录Day15打卡(二叉树)

完全二叉树:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。总结:四道题都是用递归法做的,进一步掌握和理解了递归法的思想,能过更好判断使用前,中,后序遍历的场景,回顾的时候可以尝试下迭代法。平衡二叉树:每个节点的左右两个子树的高度差的绝对值小于等于1。,返回所有从根节点到叶子节点的路径。222.完全二叉树的节点个数。222.完全二叉树的节点个数。,求出该树的节点个数。是指没有子节点的节点。,返回所有左叶子之和。给一个二叉树的根节点。

2024-10-31 10:55:08 166

原创 10.29 代码随想录Day14打卡(二叉树)

226.翻转二叉树226.翻转二叉树题目:给一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点题解:101. 对称二叉树题目:给一个二叉树的根节点root, 检查它是否轴对称。题解:思路是比较二叉树外侧节点、内侧节点是否相等。

2024-10-29 13:55:45 145

原创 10.28 代码随想录Day13打卡(二叉树)

递归法:1.确定递归函数的参数和返回值;2.确定终止条件;3.确定单层递归的条件。迭代法 :用栈的思想。

2024-10-28 19:51:17 974

原创 10.26 代码随想录Day11打卡(栈与队列)

在栈与队列部分,首先通过用栈实现队列,用队列实现栈掌握了栈与队列的基本操作。接着,通过括号匹配问题、字符串去重问题、逆波兰表达式问题来进一步掌握栈在系统中的应用,以及使用技巧。最后,通过求滑动窗口最大值,以及前K个高频元素介了解了两种队列:单调队列和优先级队列,这两个题目值得思考回顾。

2024-10-26 13:50:24 271

原创 10.25 代码随想录Day10打卡(开启栈与队列!)

题解:用一个输入栈和一个输出栈去解决该问题,在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。题解: 用一个队列就可以解决问题,将栈内所有元素存入队列后,只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时弹出元素的顺序就是栈的顺序。小结:该题和上道题思想类似,都是用栈去进行匹配功能,对栈的功能有了进一步认识。小结:掌握栈的基本用法。

2024-10-25 12:14:27 372

原创 10.24 代码随想录Day9打卡

151.翻转字符串里的单词151.翻转字符串里的单词给一个字符串s,请反转字符串中的顺序。题解:在Python中,split()方法用于根据指定的分隔符将字符串拆分成子字符串列表,再用“ “.join合并成字符串且每个字符串中间有空格。小结:使用python自带函数这道题会简单很多,但要理解c++中删除多余空格的思维。卡码网:55.右旋转字符串题目:字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。

2024-10-24 11:35:23 429

原创 10.23 代码随想录Day8打卡

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。题解:利用双指针,分别从首位进行两两交换,这里while i<j 等同于c++中for(i=0,j=len(s)-1;题解:由于Python中的字符串是不可变的,代码将字符串转换为列表,然后将每个2k区块的前k个字符反转,再将。总结:今天开启了字符串的部分内容,难度相较之前简单,可以再掌握python的基础上看看其它语言的解法。题目:编写一个函数,其作用是将输入的字符串反转过来。

2024-10-23 10:42:14 414

原创 10.22 代码随想录Day7打卡

小解:利用“双指针”+去重,由于本题只需返回数组,与下标无关,所以先对数组进行排序,i指向第一位数,left指向i+1,right指向最后一位数,然后开始遍历,分别对情况进行判断,先对a去重,在得到结果集的时候对b,c去重(此时left向右移动,right向左移动,所以while条件为right>left,不能相等)。总结:今天结束里哈希表部分,充分理解了哈希表的理论基础,以及数组、set和map的经典应用,同时学会了在什么情况使用数组、set、map,要根据题意选择最合适的方法。454.四数相加II。

2024-10-22 12:46:48 359

原创 10.21 代码随想录Day6打卡

242.有效的字母异位词。

2024-10-21 21:06:18 420

原创 10.19 代码随想录Day4打卡

题解:求两个链表交点节点的指针,零curA指向链表A的头结点,curB指向链表B的头结点,然后求出两个链表的长度及长度差值,然后让curA移动到,和curB 末尾对齐的位置,此时比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。小结:注意在交换前,要先暂存1、3的位置,不然会找不到,最后输出的一定是真实的头节点,也就是dummy_head.next。

2024-10-21 10:59:04 364

原创 10.18 代码随想录Day3打卡

题目:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。小解1:普通法:首先判断删除节点是否为头节点,分别按照对应方法删除,注意判断时要用while而不是if,因为会存在类似[1,1,1,1,1]的情况小解2:虚拟头节点:在原本的头节点前加一个虚拟头节点dummy_head,所以不管删除的节点是否为头节点,方法都为删除节点的前一个头节点指向后一个头节点。注意最后返回的是dummy_head.next(真实的头节点)

2024-10-19 01:11:36 399

空空如也

空空如也

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

TA关注的人

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