自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HTTP 失败重试(重发)方案

Qt开发中 HTTP 失败重试(重发)方案

2025-03-19 10:26:00 748

原创 代码随想录算法训练营一刷总结

自己的小总结

2023-12-11 20:10:46 458

原创 代码随想录算法训练营 ---第六十天

本题和昨天的接雨水题可以说是很相似的一题。我们知道做单调栈问题,我们要先明确我们的单调栈是递增还是递减。由题意知,我们要求最大矩形面积,所以我们需要找左右两边的第一个小的短柱子作为高,所以,我们使用单调递减栈从栈顶到栈底由大到小。面积我们可以看出就是栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度。然后就是分析三种情况情况一:当前遍历的元素heights[i]大于栈顶元素heights[st.top()]的情况。

2023-12-09 14:26:59 213

原创 代码随想录算法训练营 --- 第五十九天

本题可以说和上一题很是相似,只是有一点不同,数组是循环的。本题有两种巧妙地解法,都不难。本题是面试中考的概率很高的一题。本题共有三种方法单调栈的题目从我的感觉来讲就是明白运行过程,理清思路,进行遍历,然后考虑好栈是递增还是递减,然后基本上大部分题的基础思路就出来了。继续加油!

2023-12-08 22:08:12 234

原创 代码随想录算法训练营 ---第五十八天

本题有两种解法,第一种:暴力破解 两层for循环 时间复杂度为O(n^2) 超时了第二种:单调栈解法也是今天的主角。本题相对于前一题,无太大差别,我们只需在本题中找出nums1中数值 对应 nums2 中的位置即可求出此题,其他代码与上题相同。今天是单调栈的一天,我感觉只要明白单调栈的运行过程,就可以解决问题了。不算太难,继续加油!

2023-12-07 21:05:35 209

原创 代码随想录算法训练营 ---第五十七天

做了今天的题目我有了新的理解,我觉得过去我过于注重对于二维数组的理解,忽略了对dp数组i 和 j 的含义的理解。动态规划五部曲:1.确定dp数组的含义本题我们将i 和 j 看作是 s字符串两端,所以我们将其定义为 i和j 之间的子串是否为回文子串。有人会问为何我们不像往常一样,将dp含义定义为问题所问,是因为我们定义dp数组是为了找出其中的递推关系。帮助我们更好的解题。

2023-12-06 20:18:09 220

原创 代码随想录算法训练营 ---第五十六天

递推公式分析:不操作增删换也就是如上4种情况。那么说明不用任何操作,即在整个动规的过程中,最为关键就是正确理解dp[i][j]的定义!= word2[j - 1]),有几种情况操作一:word1[i-1]删除一个元素即操作二:word2[j-1]删除一个元素即这里有同学发现了,怎么都是删除元素,添加元素去哪了。word2添加一个元素,相当于word1删除一个元素,例如word1删除元素'd'和word2添加一个元素'd',变成, 最终的操作数是一样!a a d操作三:替换元素,word1替换。

2023-12-05 23:45:37 246

原创 代码随想录算法训练营 ---第五十五天

动态规划五部曲:1.确定dp数组的含义dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。2.确定递推公式两种情况:2.s[i-1]!= t[j-1]不相等所以我们要模拟删除此元素,相当于长度不变继承前面的长度 或理解为此元素已删除当前元素为上一个元素3.确定数组的初始化初始化为零4.确定数组的遍历顺序5.打印数组这里把代码随想路的链接给大家贴出来,因为本人理解也不是很透彻。等透彻了在进行更改对我来说,有点困难!

2023-12-05 23:06:49 285

原创 代码随想录算法训练营 ---第五十三天

本题和昨天的最大重复子串问题很相似,只不过本题不一定是连续的。确定dp数组(dp table)以及下标的含义dp[i][j]:长度为i-1 的字符串text1与长度为j-1的字符串text2的最长公共子序列长度为dp[i][j]定义为i -1 或 j-1 是为了代码实现方便2.确定递推公式主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同。

2023-12-03 18:17:40 173

原创 代码随想录算法训练营 ---第五十二天

动态规划五部曲:1.确定 dp数组下标的定义dp[i] 到达 i 时 最长递增子序列的长度2.确定递推公式我们确定当前的最大长度需要遍历前面所有的最大长度,然后如果序列最后一个值小于nums[i]那就dp[j] + 1;然后不断遍历保持最大。3.初始化dp数组因为一个数也是一个递增序列4.确定遍历顺序i++) {j < i;j++) {// 取长的子序列5.打印数组大家可以看一看第一题与第二题大的不同之处。第二题新增了一个条件:必须是连续的。

2023-12-03 18:02:22 174

原创 代码随想录算法训练营 ---第五十一天

本题相较于前几题状态复杂了起来,因为多了一个冷冻期。本题讲解可去代码随想录看,这里差不多只是加了些自己的理解。确定dp数组以及下标的含义dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j]。状态一:持有股票状态(今天买入股票,或者是之前就买入了股票然后没有操作,一直持有)不持有股票状态,这里就有两种卖出股票状态状态二:保持卖出股票的状态(两天前就卖出了股票,度过一天冷冻期。或者是前一天就是卖出股票状态,一直没操作)状态三:今天卖出股票。

2023-11-30 16:23:17 225

原创 代码随想录算法训练营 ---第五十天

做买卖股票的问题最重要的是分析状态,将状态分析清楚本题也就做出来了。我们看本题它说我们至多可以完成两笔交易,也就意味着我们有两种选择本题和上一题的区别在于可以交易k次状态,所以我们有2*k+1个状态。然后我们可以看一下上一题我分析的两次交易数量不同,状态转移方程的不同发现一下其中的规律就可以做了。今天和昨天都是股票买卖的问题,经过这两天的学习,发现了此系列的规律,继续加油!

2023-11-29 19:05:15 407

原创 代码随想录算法训练营 ---第四十九天

今天是买卖股票的最佳时机系列,本系列之前在学习贪心思想时做过一些。本题在读题时我们要注意到几个细节1.本题股票买卖只有一次。2.我们要在最低点买股票,在最高点卖股票。今天的题目不难,但是本系列的通解还是要着重理解。继续加油!

2023-11-28 20:43:24 191

原创 代码随想录算法训练营 ---第四十八天

注:本题简介是我的思路,题解思路看下方。动态规划五部曲:1.确定dp数组的含义//dp[i]表示 偷到第i家能偷到的最大金额i++){if(i-3>=0)else{2.确定递归公式else{3.确定初始化4.确定遍历顺序5.打印数组情况一:考虑不包含首尾元素情况二:考虑包含首元素,不包含尾元素情况三:考虑包含尾元素,不包含首元素但是我们可以看出情况二 三都包含了情况一的情况。所以我们算出情况二 和情况三分别可以获得的最大利益。再进行比较就可以了。

2023-11-27 20:17:30 150

原创 代码随想录算法训练营 ---第四十六天

本题的重点在于确定背包容量和物品数量确定dp数组以及下标的含义dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。2.确定递推公式如果确定dp[j] 是true,且 [j, i] 这个区间的子串出现在字典里,那么dp[i]一定是true。(j < i )。所以递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = true。3.dp数组如何初始化dp[0]初始为true完全就是为了推导公式。

2023-11-27 19:16:02 215

原创 代码随想录算法训练营 ---第四十五天

昨天的题做过之后,今天的题基本上都很简单,但是要注重一下细节。动态规划五部曲:1.确定dp数组的含义dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法2.确定dp公式i:可以看作本次的物品值j:可以看作背包容量3.确定如何初始化dp数组dp[0] = 1;4.确定如何遍历数组先遍历背包,再遍历物品(因为我们先迈一步再迈两步 还是 先迈两步再迈一步 是有区别的)j<=n;j++){i<=m;i++){if(j-i>=0)5.打印数组,看是否正确。

2023-11-26 16:40:40 186

原创 代码随想录算法训练营 ---第四十四天

完全背包和01背包的区别在于完全背包里的物品能无限次使用,01背包只能用一次。本题是纯完全背包的使用。可以看一看和01背包的区别。本题是对完全背包的场景应用题,在本题与下一题我们将会了解如果求组合数(无需排序)就是外层for循环遍历物品,内层for遍历背包。如果求排列数(需要排序)就是外层for遍历背包,内层for循环遍历物品。先看本题,动态规划五部曲1.确定dp数组的含义和下标dp[j]:表示当金额为j时,所需硬币有几种组合2.确定递归公式3.确定dp数组的初始化dp[0] = 1;

2023-11-26 16:11:51 168

原创 代码随想录算法训练营 ---第四十三天

今天同样是01背包问题,今天详细学习了背包问题在各种场景下的应用。今天一道也没做出来,有点废。好难啊!就是思路不太清晰,不知道如何去做,看了题解后感觉原来如此,但是想不出来。今天做的时候有几道题思路基本差不多,但是想着想着就懵了,直接把自己绕进去了。本题与昨天的最后一题有点相像,基本思路一致。只不过昨天那题是求两子集相等的时候,本题可以看作求两子集的相差最小同样动态规划五部曲:1.确定dp数组的含义dp[j] 表示容量(这里说容量更形象,其实就是重量)为j的背包,最多可以背最大重量为dp[j]。

2023-11-25 17:48:52 173

原创 代码随想录算法训练营 ---第四十二天

1.确定dp数组的含义dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。2.确定递归公式3.初始化dp数组在01背包,一维dp如何初始化,已经讲过,从dp[j]的定义来看,首先dp[0]一定是0.如果题目给的价值都是正整数那么非0下标都初始化为0就可以了,如果题目给的价值有负数,那么非0下标就要初始化为负无穷。这样才能让dp数组在递推的过程中取得最大的价值,而不是被初始值覆盖了.本题题目中 只包含正整数的非空数组,所以非0下标的元素初始化为0就可以了。4.遍历数组。

2023-11-25 17:06:59 234

原创 代码随想录算法训练营 ---第四十一天

本题同样我们用动态规划五部曲来进行分析。1.确定dp数组(dp table)以及下标的含义(重要)dp[i]的定义为:分拆数字i,可以得到的最大乘积为dp[i]。2.确定递推公式 (重要)可以想 dp[i]最大乘积是怎么得到的呢?其实可以从1遍历j,然后有两种渠道得到dp[i],一个 是j * (i - j) 直接相乘。一个是j * dp[i - j],相当于是拆分(i - j)。注:j为何不进行拆分因为j是从1开始遍历,拆分j的情况,在遍历j的过程中其实都计算过了。

2023-11-20 19:08:56 104

原创 代码随想录算法训练营 ---第三十九天

本题同样我们用动态规划五部曲来进行分析。本题是动态规划二维dp数组的入门题目。1.确定二维dp数组(dp table)以及下标的含义(重要)dp[i][j]的定义为:爬到第i层第j个位置有几种走法2.确定递推公式 (重要)3.dp数组如何初始化本题的初始化有点特别,我们可以想象如果我们从起点开始一直向右走,那么右面只有一条路所以值都为1,同理,向下走也同样为1。所以我们初始化直接将直接向右走或者直接向下走都初始化为1。4.确定遍历顺序5.看结果与我们所想是否一致。

2023-11-20 18:35:49 119

原创 代码随想录算法训练营 ---第三十八天

本题是动态规划入门的经典题目,我们按照动态规划五部曲进行分析。确定dp数组(dp table)以及下标的含义(重要)dp[i]的定义为:第i个数的斐波那契数值是dp[i]2.确定递推公式 (重要)3.dp数组如何初始化4.确定遍历顺序5.看结果与我们所想是否一致我们按照动态规划五部曲进行分析。确定dp数组(dp table)以及下标的含义(重要)dp[i]的定义为:爬到第i阶一共有几种方法2.确定递推公式 (重要)3.dp数组如何初始化4.确定遍历顺序5.

2023-11-20 16:56:17 123

原创 代码随想录算法训练营 ---第三十七天

本题刚开始思考时跟着思路写出了暴力算法,但是超时了。然后,看到了本题的贪心思想例如98,一旦出现strNum()[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9,这样这个整数就是89。就可以很自然想到对应的贪心解法了。想到了贪心,还要考虑遍历顺序,只有从后向前遍历才能重复利用上次比较的结果。最后代码实现的时候,也需要一些技巧,例如用一个flag来标记从哪里开始赋值9。本题可以说是二叉树与贪心思想的结合。

2023-11-16 18:27:48 103

原创 代码随想录算法训练营 ---第三十六天

本题可以说是 昨天 最小数量射气球的翻版题目了,昨天那题要的是区间的个数,今天本体要的是重叠区间的个数。本题思路很巧妙,在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了。此时前面出现过所有字母,最远也就到这个边界了。本题我的思路为我们不断遍历区间,当区间重叠的时候我们需要将两个区间进行整合(我的做法为将最小边界,最远边界都赋值给当前区间),如果未重叠那么我们需要将前一个已经整合好的区间加入到结果集里。

2023-11-16 18:12:57 126

原创 代码随想录算法训练营 ---第三十四天

本题不算难题,我的思路是能给大票给大票,大票不够再给小票。例如,给20美元找零,先看有没有10元的零钱再看5元的。局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。本题和昨天做的分发糖果有相同的思想,如果两边一起顾,难免会混乱。所以,我们一个维度一个维度的来。首先,我们先对身高进行由大到小进行排序,如果身高相同那么k小的排在前面,这样排完后,我们可以保证如果还是不懂,可以自己debug一遍就懂了。身高由大到小后,我们就可以按照k的值在索引为k的地方插入该值。

2023-11-14 17:59:55 104

原创 代码随想录算法训练营 ---第三十二天

本题感觉跟着感觉就出来了我进行了排序,只要尽量减少负数的个数就可以了。代码随想录:加油站本题提出了一种分治思想,从左向右 ,总有向左,分别操作,防止左右为难。今天共计三道题,虽然只独立A出来一题,但是受益匪浅。继续加油!

2023-11-13 19:33:53 115

原创 代码随想录算法训练营 ---第三十一天

局部最优:收集每天的正利润。全局最优:求得最大利润。本题题解思路和我的思路不太一样。我都说一下本题我的想法是我们要记录的是跳步的最小次数,那么我就从后往前跳每次条最大限度,达到起点就是最小跳步次数。我们看一个例子首先,我们开始遍历,遍历到3的时候,因为我们从三可以直接跳到四,所以我们将3到4作为最后一步。然后将遍历的终点变为3的位置。我们从头开始遍历,我们发现从2可以直接跳到3,此时我们就不用遍历了,因为已到达起点,我们将2跳到3作为倒数第二步,然后结束所以最小步数为2.

2023-11-12 17:20:03 87

原创 代码随想录算法训练营 ---第三十天

本题的贪心思想是如何用最少的饼干满足最多的人。刚开始使用两个排序是为了让两个数组都从最小的开始,最小胃口的人获得最小的饼干,一次类推。这样能满足最大的人。大家可以去看代码随想录的解析很详细,也可以听听我的想法。我认为主要的思想是判断峰值,如果有高峰或者低谷就将最后结果+1。刚开始我做这道题时是判断符合差为正负正负的规律就可以将此数加入进来。但是我忽略了一个问题以下图为例。

2023-11-10 19:59:19 134

原创 代码随想录算法训练营 ---第二十八天

真难啊!!!!!做不出来!!!!继续加油吧。虽然这么说但是第一题和第二题听完后还是可以AC出来的,第三题还是没有理解,今天耗费时间有点长了。明天在理解。

2023-11-09 20:24:37 110

原创 代码随想录算法训练营 ---第二十七天

今天总体来说,比较轻松。都独立AC过了。继续加油!

2023-11-09 20:14:30 123

原创 代码随想录算法训练营 ---第二十六天

本题的重点在于如何切割并且判断切割的子串是否每个都合法。并且切割的子串永远保持有且只有四个部分不多也不少。今天的题不算难,都独立AC出来了。但是,要对切割问题还不是很熟,需要多加练习,继续加油!

2023-11-07 21:56:09 110

原创 代码随想录算法训练营 ---第二十五天

本题的难点在于数组中的每个数都可以重复使用,所以当我们进行回溯时需要考虑好每次给递归for循环每次从什么位置开始。然后回溯过后为了不和前面的组合重复,startindex该如何变化。本题思路与上文相似,但是要注意一点不同的是,如何保证数组不会出现下列图片像【1,2,5】【2,1,5】一样的重复数组。然后如何避免当数组中有数值相同的元素是如何避免出现相同的值。如何剪枝去重。本题的思路我们如何进行切割字符串(通过将startindex当做一个隔板,然后通过不断递归插入隔板进行切割。

2023-11-06 22:15:31 136

原创 代码随想录算法训练营 ---第二十四天

这两天正式对 回溯算法:组合问题 进行了深刻的学习和理解。继续加油!

2023-11-05 13:45:15 154

原创 代码随想录算法训练营 ---第二十三天

在前面做二叉树章节的题目时,可以看出基本上有递归就有回溯。两者基本上是绑定在一起的。回溯的本质就是循环遍历,就是暴力破解。所以他的效率不高。今天,又是一个新的开始,开始接触回溯算法。算法本身不是很难,只是不好理解。继续加油!

2023-11-05 13:24:45 45

原创 代码随想录算法训练营 ---第二十三天

今天在第一题浪费时间较久,对于空指针,野指针,智能指针,等c++11新特性做了学习和了解,后两题都是秒杀。继续加油!

2023-11-02 17:55:22 95

原创 代码随想录算法训练营 ---第二十二天

今天是第二十二天,今天写的有点简陋。有点累。休息一下。继续加油!

2023-11-01 21:51:30 112

原创 代码随想录算法训练营 ---第二十一天

今天是第二十一天,对于二叉搜索树进行了巩固,第三题需要多加思考和巩固。再判断题目解法时,要考虑合适的递归方法,继续加油!

2023-10-31 19:58:57 42

原创 算法随想录算法训练营 ---第二十天

今天感觉还可以,最近越来越顺手了。继续加油!

2023-10-30 18:49:22 105

原创 代码随想录算法训练营 ---第十八天

今天总体来说在第三题花费时间较长,真的要注重细节,自己写的时候就是有地方不对,很无语。还是继续努力,继续加油!坚持!

2023-10-28 21:00:49 129 1

原创 代码随想录算法训练营 ---第十七天

今天共有三道题,感觉是有一点小进步,三道题都可以独立用递归A出来而且与题解方法只有一点差别。但还需继续努力。继续加油!

2023-10-28 20:20:07 127 1

空空如也

空空如也

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

TA关注的人

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