自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录day41 ||股票问题

在解决这个问题的过程中,我们用一个二维数组dp[i][j]来表示在第i天的状态,其中jdp[i][0]: 第i天没有做任何交易,且不持有股票。dp[i][1]: 第i天进行了第一次交易持有股票(相当于买了一次)。dp[i][2]: 第i天完成了第一次交易(买入并卖出,结束手上没有股票)。dp[i][3]: 第i天进行了第二次交易持有股票(第二次买入)。dp[i][4]: 第i天完成了第二次交易(第二次交易也结束,不持有股票)。

2024-08-13 15:39:42 1309

原创 代码随想录day39||打劫家舍系列3道题

你是一个专业的小偷,计划偷窃沿街的房屋。偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。,一夜之内能够偷窃到的最高金额。

2024-08-12 14:59:12 906

原创 代码随想录day38|| 322零钱兑换 279完全平方数 139单词拆分

最后,dp[11] = 3,表示使用面额 [1, 2, 5] 可以凑成11的最少硬币数量为3(例如 5 + 5 + 1)。返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。假设 s = "leetcode",wordDict = ["leet", "code"]。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。的完全平方数的最少数量。

2024-08-12 11:01:37 2147

原创 代码随想录day37|| 52携带研究材料 518零钱兑换Ⅱ 377组合总和Ⅳ 57爬楼梯

给定 n 个物品,第 i 个物品的重量为 wgt[i−1]、价值为 val[i−1] ,和一个容量为 cap 的背包。,问在限定背包容量下能放入物品的最大价值首先再回顾一下01背包的核心代码。

2024-08-08 18:00:43 1235

原创 代码随想录day36|| 1049最后一块石头的重量 494目标和 474一和零

力扣题目链接题目描述:有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。如果x == y,那么两块石头都会被完全粉碎;如果x!= y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回0。示例 1:1组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],

2024-08-07 17:33:11 1107

原创 代码随想录day34|| 01背包问题二维数组 + 一维数组 416分割等和子集

小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。此时只需要找到一个子集的和为sum/2就可以了,此时背包容量相当于sum/2,每个数字的价值就是这个数字的大小,重量也是这个数组的大小。dp[j]=max(dp[j],dp[j-nums[i]](所占空间)+nums[i](价值))物品一被加了好几遍,所以倒着遍历,因为公式是往前找的:dp[j - costs[i]] + values[i]j>=nums[i];

2024-08-06 17:42:58 636

原创 代码随想录day34 || 62不同路径 63不同路径2 343整数拆分

动归5步法1,确定dp数组(dp table)以及下标的含义2,确定递推公式3,dp数组如何初始化4,确定遍历顺序5,举例推导dp数组。

2024-08-05 13:22:28 1089

原创 代码随想录day32 || 509斐波那契数列 70爬楼梯 746使用最小花费爬楼梯

力扣题目链接题目描述:斐波那契数 (通常用 表示)形成的序列称为 斐波那契数列 。该数列由 和 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 ,请计算 。代码1(自己的)比较官方的:70爬楼梯力扣题目链接题目描述:假设你正在爬楼梯。需要 阶你才能到达楼顶。每次你可以爬 或 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2

2024-08-03 16:57:32 827

原创 代码随想录day31|| 56合并区间 738 递增数字

力扣题目链接题目描述:以数组 表示若干个区间的集合,其中单个区间为 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4],[4,5]]输出:[[1,5]]解释:区间 [1,4]

2024-08-02 16:04:19 1122

原创 代码随想录day30打卡|| 452用最少数量的箭引爆气球 435无重叠区间 763划分字母区间

这个逻辑确保算法的时间复杂度为 O(n log n),主要是由于排序过程,而遍历气球的过程时间复杂度为 O(n)。像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。-在x = 11处发射箭,击破气球[10,16]和[7,12]。- 在x = 2处发射箭,击破气球[1,2]和[2,3]。- 在x = 4处射出箭,击破气球[3,4]和[4,5]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。处射出一支箭,若有一个气球的直径的开始和结束坐标为。

2024-08-01 15:36:38 802

原创 代码随想录day 29|| 134加油站 135分发糖果 860柠檬水找零 406根据身高重建队列

编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。

2024-07-31 17:42:12 1129

原创 三下乡项目 河南大学 项目名称:青春接力,与你同行

活动不仅增强了孩子们的身体素质,也培养了他们的团队合作精神与对体育的热爱,看着孩子们的笑脸,真是让人倍感欣慰。我们召开了热烈的讨论会,团队成员分组分析了社区的核心需求,确定了活动目标。我们认真收集了居民的意见,评估服务的影响,反思活动中的不足,同时分享团队合作的宝贵经验。通过寻找合适的住宿地点,缓解了首次相聚的紧张气氛,为接下来的活动积蓄了能量和信心。在与居民的交流中,我们收获了更多的信任与友情,一起感受到了社区的温暖。

2024-07-30 18:33:08 165

原创 代码随想录day28|| 122买卖股票的最佳时机 55跳跃游戏 45跳跃游戏2 1005,k次取反的最大化数组

随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在每次判断可达性的过程中,我们要识别当前覆盖的最远距离和下一个覆盖的最远距离之间的关系。

2024-07-30 17:28:53 1174

原创 代码随想录 Day27 || 455分发饼干 376摆动序列 53最大子数组和

是一种常见的解决优化问题的算法,其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决策,以期获得全局最优解。在计算是否有峰值的时候,大家知道遍历的下标 i ,计算 prediff(nums[i] - nums[i-1]) 和 curdiff(nums[i+1] - nums[i]),如果。其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8)。,这是能让孩子们满足胃口的饼干的最小尺寸;

2024-07-29 14:20:22 2315

原创 代码随想录||day25 非递减子序列,全排列问题

意思就是,在已经确定了第二个元素时(也就是当前元素是true)而前一个元素是false时说明前一个元素肯定已经考虑过了,因为遍历是从左往右遍历,此时如果不进行continue,就会重复考虑相同元素,所以当。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。,找出并返回所有该数组中不同的递增子序列,递增子序列中。给定一个可包含重复数字的序列。给定一个不含重复数字的数组。返回所有不重复的全排列。不用哈希表,用set。:时就cotinue。

2024-07-27 16:57:30 987

原创 代码随想录day24打卡|| 93复原ip地址 78子集| 90子集||

result这是一个二维向量,用于存储所有生成的子集。每个子集被存储为类型的一个元素。pathpath是一个一维向量,用来存放当前正在构建的子集。每次在回溯过程中,都会对这个路径进行修改。这个函数用于递归生成所有的子集。它接受两个参数:数字数组nums和当前的起始索引startindex。添加当前子集:每次调用时,当前路径(作为子集)都会被添加到结果中。循环遍历:通过一个for循环来遍历输入数组nums中的每个元素,从startindex开始。对于每个元素:将其添加到path。

2024-07-26 16:58:26 1238

原创 代码随想录day23 ||39组合总和1 40组合总和2 131分割回文串

2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。如果至少一个数字的被选数量不同,则两种组合是不同的。中的每个数字在每个组合中只能使用。7 也是一个候选, 7 = 7。,并以列表形式返回。分割成一些子串,使每个子串都是。中可以使数字和为目标数。对于给定的输入,保证和为。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。所有可能的分割方案。

2024-07-25 14:53:28 495

原创 代码随想录 day22(回溯算法) ||77组合 216组合总和 17电话字母的总和

回溯算法(backtracking algorithm)是一种通过穷举来解决问题的方法,它的核心思想是从一个初始状态出发,暴力搜索所有可能的解决方案,当遇到正确的解则将其记录,直到找到解或者尝试了所有可能的选择都无法找到解为止。回溯算法通常采用“深度优先搜索”来遍历解空间。在“二叉树”章节中,我们提到前序、中序和后序遍历都属于深度优先搜索。接下来,我们利用前序遍历构造一个回溯问题,逐步了解回溯算法的工作原理。。

2024-07-24 11:48:57 863

原创 代码随想录day21 二叉树最后一天 || 669修剪二叉树 108将有序数组转变为平衡搜索二叉树 538把搜索二叉树变为累加二叉树

无参构造函数将节点默认初始化为值 0 和空子节点,有参构造函数将节点的值初始化为给定值,最后一个构造函数同时初始化节点的值和子节点。改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。这里,通过递归处理左右子树,并将返回的修剪后的子树赋值给当前节点的左右子节点,最后返回当前节点。,然后释放当前节点,返回修剪后的右子树。,然后释放当前节点,返回修剪后的左子树。

2024-07-23 18:54:43 1121

原创 代码随想录Day20| |235二叉搜索树的最近公共祖先 701二叉搜索树的插入操作 450删除二叉搜索树中的节点

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]对应的节点,并保证二叉搜索树的性质不变。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。另一个正确答案是 [5,2,6,null,4,null,7]。给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。,删除二叉搜索树中的。

2024-07-22 15:15:54 656

原创 代码随想录day18 || 530二叉搜索树的绝对值 501二叉搜索树的众数 236二叉树的最近公共祖先

用于存储来自map的所有键值对,以便进行排序和筛选操作。虽然直接使用map也是可以的,但这将使得后续操作变得繁琐(如排序和遍历)。因此,使用一个包含pair的vector在这个上下文中是更加简便和有效的选择。

2024-07-21 18:07:06 982

原创 代码随想录Day17 | |654 最大二叉树 700二叉树中的搜索 617合并二叉树 98验证二叉搜索树

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 空数组,无子节点。根节点的值是 5 ,但是右子节点的值是 4。

2024-07-21 14:52:41 585

原创 代码随想录Day16|| 112路径总和(| 与||)106从中序与后序遍历序列构造二叉树,513找数左下角的值

直接上代码(我懒得写了,只看了一遍,能看懂,写不出来,看完也不想再写一便)不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。等于目标和的根节点到叶节点路径如上图所示。路径总和等于给定目标和的路径。(1 --> 2): 和为 3。(1 --> 3): 和为 4。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。是二叉树的中序遍历,

2024-07-20 15:26:38 757

原创 代码随想录Day15|| 110平衡二叉树 257二叉树的所有路径 404左叶子之和 222完全二叉树的节点个数

*后序遍历,后序遍历的好处就是,先遍历左子树的子节点,再一级一级返回,在遍历右子树的子节点,在一级一级返回,返回给父节点,父节点在返回给父父节点,这样正好可以从下到上依次统计节点数量*/的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。/*注意迭代的遍历顺序时左右中,后序遍历,因为这样可以依次向上返回高度*///掌握前中后序遍历与层序遍历很重要!,返回所有从根节点到叶子节点的路径。,求出该树的节点个数。

2024-07-19 22:52:00 662

原创 代码随想录|| Day14 226 反转二叉树 101对称二叉树 104二叉树最大深度 111二叉树最小深度

遍历某一层的时候,一旦发现左右子树都为空,意思就是该节点是叶节点,就直接返回。递归在遍历二叉树时,每次往下递推就是到下一深度,直到最底层。每退出一次for循环就是往下深入一层,depth++代码:(层序遍历的模板,加一个depth的计数器)每一次归位就是循环结束,归出此层(回到上一层),翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。

2024-07-17 18:50:25 816

原创 代码随想录||Day 13 新学习二叉树 二叉树的迭代遍历(前中后) 二叉树的层序遍历(模板)

0,二叉树概念 1,二叉树的迭代遍历(前中后) 2,二叉树的层序遍历(模板)

2024-07-17 16:01:45 1131 1

原创 代码随想录day11||150,逆波兰表达式求值 239,滑动窗口最大值 347,前k个高频元素

*当遇到的是符号时,就以此符号来进行前两个数的运算,不是符号,就放入栈中,用运算完的结果替换掉使用该符号的数(及时弹出运算过的数字)*/单调队列:单调递减或者单调递增的队列,因为这样,我们每往下访问一个窗口,如果是单调递减的队列,那么,最大值一定是front()。这题用小顶堆实现,小顶堆会自动排序,但我们此时的小顶堆的排序需要自己定义,让这个顶堆的排序是根据数字出现的次数来排序。:这是自定义的比较器类型,用于指定优先队列中元素的排序方式。用队列实现,要用自定义的队列类型,实现单调队列。

2024-07-14 23:09:16 1911

原创 代码随想录Day10||234,用栈实现队列 225,用队列实现栈 20,有效的括号 1047,删除字符中所有相邻的重复项

代码随想录Day10||234,用栈实现队列 225,用队列实现栈 20,有效的括号 1047,删除字符中所有相邻的重复项

2024-07-12 23:23:47 548

原创 代码随想录||Day9 151.反转字符串中的单词 55.右旋字符串

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。/*与移除元素的不同点就在于要在每个单词后面加一个空格,并删除其他的空格,不删除添加的空格的操作是slow++这个操作。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"中使用至少一个空格将字符串中的。

2024-07-12 10:28:44 364

原创 代码随想录||Day8打卡 344.反转字符串 541.反转字符串2 54.替换数字

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"这题没什么好说的,就是从两头开始遍历,两两交换,用swap函数就可以。,如果按传统的方式来写,要有计数器,for循环里的i从0。,然后加上判断这个区间符合那一个条件,要反转的是哪一部分。然后定义两个指针,一个来遍历s,一个来遍历news。一次加一,很麻烦,这次的。

2024-07-11 18:37:40 631

原创 代码随想录||Day7 454.四数相加 383.赎金信 15.三数之和 18,四数之和

接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left 就向右移动,才能让三数之和大一些,直到left与right相遇为止。2,遍历A和B数组,统计两个数组元素之和,和出现的次数,放到map中。,判断是否存在三元组。

2024-07-10 23:38:19 1164

原创 代码随想录Day6||349,两数组的交集 202.快乐数 1,两数之和 242.有效的字母异位词

是存储键-值对的有序关联容器,用于你的twoSum问题是非常合适的。set<int>仅存储键,无法存储值,不适用于需要存储额外信息(如下标)的情况。map<int>是不合法的用法,map必须定义键和值两种类型。因此,对于你的twoSum问题,只有才能满足需求。

2024-07-09 19:14:26 1156 2

原创 代码随想录Day4||24,两两交换链表节点 19,删除链表倒数第n个节点 2.07链表相交 142,环形链表

代码随想录Day4||24,两两交换链表节点 19,删除链表倒数第n个节点 2.07链表相交 142,环形链表

2024-07-07 22:47:35 499

原创 代码随想录Day3 | 链表的操作 203.移除链表元素 707.设计链表 206.设计链表

代码随想录Day3 | 链表的操作 203.移除链表元素 707.设计链表 206.设计链表

2024-07-05 23:19:01 345

原创 代码随想录day2 有序数组的平方 ,长度最小子数组,螺旋矩阵

遍历的顺序依次是[1,2),[2,3), [3.4), [4,5) 特事特办res[1][1]这题重要的是区间问题,开闭很重要,可以借鉴二分法的开闭。这题最重要的就是循环体里的算法,很巧妙,建议记住。(1)暴力法 平方完用sort函数。这里用代码随想录的图片来解释一下。

2024-07-05 00:03:36 202 3

原创 代码随想录day1

二分法,移除元素双指针

2024-07-03 18:16:23 248 2

空空如也

空空如也

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

TA关注的人

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