随笔分类 -  代码随想录二刷

为了加深自己对代码的印象而成 方便自己以后忘记方法论时回头可以找得到当时我的思想
摘要:✅做题思路or感想 这道题是我二刷代码随想录一路无双下来第一个遇到的一点思路也没有的题目,惭愧 dp数组的含义 dp[i]是指总节点数为n的不同二叉搜索树的种类 递推公式 在对dp[i]的遍历中,总节点数为n,取其中的j 为一个根节点,则这个节点的左边有j - 1个节点,右边有i - j个节点,故d 阅读全文
posted @ 2022-04-05 18:36 北原春希 阅读(12) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 其实做这道题的时候我一直在想,要不是看了一眼标签里有动态规划,这道题谁会知道要用动态规划来做啊? dp数组的含义 dp[i]指把整数n拆分后的最大乘积(这里的拆分至少是拆成两个数!,所以dp[i][j]至少是两个数的乘积) 递推公式 从1遍历到j,得到dp[i]的渠道有 (i - 阅读全文
posted @ 2022-04-05 18:24 北原春希 阅读(35) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 一眼图论,但其实是动态规划 这一题和上面一题不同,有了障碍物的设计 dp数组的含义 求什么就设什么。dp[i][j]是到达坐标(i, j)的不同路径数 递推公式 到达(i, j)的路径可以是从(i - 1, j)来,也可以是从(i, j - 1)来,题目求的是方法数,故这里就直接 阅读全文
posted @ 2022-04-05 16:40 北原春希 阅读(16) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 乍一看是一道图论题(实际上也可以用图论),但是可以用动态规划来解的题。 dp数组的含义 求什么就设什么。dp[i][j]是到达坐标(i, j)的不同路径数 递推公式 到达(i, j)的路径可以是从(i - 1, j)来,也可以是从(i, j - 1)来,题目求的是方法数,故这里就 阅读全文
posted @ 2022-04-05 16:35 北原春希 阅读(22) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这一题的题面就难读的离谱,可以引用一位大哥的话 我觉得这个题的描述应该改改:每个阶梯都有一定数量坨屎,一次只能跨一个或者两个阶梯,走到一个阶梯就要吃光上面的屎,问怎么走才能吃最少的屎?开局你选前两个阶梯的其中一个作为开头点,并吃光该阶梯的屎。 豁然开朗💡 dp数组的含义 求什么 阅读全文
posted @ 2022-04-05 16:29 北原春希 阅读(22) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这里和斐波那契的区别是这里是要求方法数 dp数组的含义 dp[n]意思是爬到第n阶台阶有的不同种的方法数 递推公式 爬到第n阶台阶有几种方法呢,可以从n - 1阶爬上来,也可以从 n - 2阶爬上来,故dp[n] = dp[n - 1] + dp[n - 2] 初始化 dp[0] 阅读全文
posted @ 2022-04-05 16:24 北原春希 阅读(19) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 直接dp四部曲(第五步是调试,故省) dp数组的含义 当值为n时,斐波那契数列f(n)的值 递推公式 题目已经给了:F(n) = F(n - 1) + F(n - 2),其中 n > 1 初始化 因为要确保n-2 >= 0,故这里要初始化到dp[1],而dp[1],dp[0]的值 阅读全文
posted @ 2022-04-05 16:18 北原春希 阅读(17) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 一刷的我对这道题头痛不已,二刷的我一遍过,这种成就感是难以言说的。 而且这一次二刷的思路完全是根据自己的思路来设计的,我个人认为比Carl哥在书上写的思路更加浅显易懂。Carl哥在书上写的这道题的思路太绕了,而且用了好多奇怪的知识去解。 思路 大体思路是用两个变量start和en 阅读全文
posted @ 2022-04-04 15:44 北原春希 阅读(30) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 少有的二刷小障碍 大体思路是:为了让后面的数单调递减,最简单的方法就是把后面小的数直接改成9,让前面的数-1(相当于直接借了一位给后面,借一位给后面是最简单的方法了) 当然这道题还得先要老生常谈的化为字符串,才能对上面的数字实施精准修改 class Solution { publ 阅读全文
posted @ 2022-04-04 15:42 北原春希 阅读(43) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这题亦是一道贪心(这种题目不明所里的一看上去迷糊的一般都是贪心) 难点有二: 贪心策略 如何实现贪心的策略 贪心策略 这里的策略倒是很简单:只要射的箭都是往气球最重合的地方射,所用的数量就会最少 实现策略 这里为了让气球能够重合,所以要对原数组进行排序。难点在于如何对一个二维ve 阅读全文
posted @ 2022-04-04 14:35 北原春希 阅读(38) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这一题经典贪心 难点有二 如何模拟钱币交换的过程 贪心的策略 如何模拟钱币交换的过程 这里其实用三个数组分别来记录三种纸币的数量就可以了(是不是很简单) 贪心的策略 这里先分情况 客人付了5块钱。这个时候不需要找零 客人付了10块钱,需要找5块钱回去 客人付了20块钱,可以付3张 阅读全文
posted @ 2022-04-04 13:57 北原春希 阅读(21) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这道题与其说是考贪心,不如说是考思维。这种题都没有固定的模板,纯靠自己思维想出来,小难。 思路 这里不能同时从左右两边遍历,只能一边一边来 先从左往右遍历,确保右边分高的孩子能领到比左边孩子更多的糖果 再从右往左遍历,确保左边分高的孩子能领到比右边孩子更多的糖果 这个从右往左的遍 阅读全文
posted @ 2022-04-03 17:25 北原春希 阅读(14) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这道题思路来源于力扣上的大哥:鸭鸭鸭 我觉得我的思路已经完全跟不上他的强大了,故在这里分享一下他的评论吧 有一个环形路上有n个站点; 每个站点都有一个好人或一个坏人; 好人会给你钱,坏人会收你一定的过路费,如果你带的钱不够付过路费,坏人会跳起来把你砍死; 问:从哪个站点出发,能绕 阅读全文
posted @ 2022-04-03 16:47 北原春希 阅读(9) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这一题的主要思路是利用最大可移动距离来解题,而不是模拟一个小人一步步往前跳 多的不说了,全在代码里了 class Solution { public: int jump(vector<int>& nums) { if (nums.size() == 1)return 0; //防 阅读全文
posted @ 2022-04-03 16:26 北原春希 阅读(22) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这一题说是用贪心,我个人更倾向于是脑筋急转弯or单纯考察思维 这一题的大忌就是模拟一个人从初始点一个个跳格子,很容易把自己绕进去 这类题的真正思路应该是计算可跳的覆盖范围 如果可跳的覆盖范围覆盖了终点,则说明可以跳到终点 如果循环遍历结束了,覆盖范围都没有覆盖到终点,则说明不可言 阅读全文
posted @ 2022-04-03 15:50 北原春希 阅读(20) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 一眼暴力,可以用两个for嵌套来找子数组和,但是太费时了 故这里可以用一个for的贪心算法来解决 这里的贪心的策略是:当sum + num[i] < num[i],则sum = num[i] 如果原本积累的和 + 当前值 还比不上直接用当前值,那么就重新从当前值开始积累就好了 这 阅读全文
posted @ 2022-04-03 14:44 北原春希 阅读(27) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 这题的思路源于力扣上的nwpuCfy,这位先生的思路可堪一绝 这一题代码随想录上用的是贪心,但是我贪心太糟糕了,故这里选用动态规划来解 这一题的dp的思路并不难,难的是怎么把这道题看成dp的题来做 dp四部曲 dp数组的意义 dp[i]表示的是[0, i - 1]上最长的摆动序列 阅读全文
posted @ 2022-04-03 14:21 北原春希 阅读(25) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 分饼干,经典贪心题 这里的贪心策略是:用最小的饼干去满足食量最少的小孩or用最大的饼干去满足食量最大的小孩 这里我用前者 class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s 阅读全文
posted @ 2022-04-03 13:30 北原春希 阅读(21) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 (二刷直接初见过,在用时和内存消耗上远强于一刷,我真的成长了) 经典八皇后问题,回溯法理所应当 八皇后的要求:一个皇后的上下左右,以及斜线上不能有其他皇后 故这里的思路就是判断当前位置是否符合八皇后的要求,符合,则回溯递归,不符合,则continue 递归三部曲 递归参数 除了地 阅读全文
posted @ 2022-04-02 21:01 北原春希 阅读(15) 评论(0) 推荐(0) 编辑
摘要:✅做题思路or感想 求排列问题,用回溯法 这里和一般的排列问题的区别是:有重复的数字 然后因为是求排列,则同一个位置上的数字不能重复用 这就要求了:既要树层去重,又要树枝去重 而这些操作只用一个used数组就可以了 class Solution { public: vector<vector<int 阅读全文
posted @ 2022-04-02 20:24 北原春希 阅读(20) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示