代码随想录刷题总结博客
文章平均质量分 90
- -
Kom19
多多重复 百练成钢
展开
-
一篇文章带你搞懂 单调栈 是怎么回事
单调栈实际上就是一个栈,他的作用就是存储我们遍历过的数字。当我们遍历数组的时候,遍历到后面的数组后并不知道前面遍历过的元素是什么,所以单调栈的作用就是用于存储遍历过的数字。最后要我们返回的是该日究竟在几天后才会出现温度更低的情况,所以我们的返回数组里面存放的是距离。首先明确两点:1.栈内元素是单调递增 (从栈底到栈顶)2.栈内存放的是数组的下标。介绍完单调栈的本质以及使用的注意事项以后就来介绍一下。了解完怎么使用单调栈以后就来看看常见的单调栈题目了。那么也就是寻找下一个更小的元素那么我们就使用单调栈。原创 2023-10-18 11:46:27 · 98 阅读 · 0 评论 -
一篇文章带你用动态规划解决股票购买时机问题
那么很自然的我们就想到了使用动态规划的思想来解决问题,接下来就根据动态规划以及解题的核心思想来解决 股票购买时机问题。第二次持有是第二题的思路,因为此时买卖股票需要结合上一次买卖股票的状态来决定(多次买卖股票)注意我们在初始化的时候是从 i = 1 开始的 也就是说 第一次持有股票时的状态还是。首先由持有状态 不持有状态(保持不持有状态,前一天是冷冻期状态) 冷冻期状态。本题遇上一题最大的不同就是可以多次买卖股票了,大题思路和上一题是差不多的。持有状态可以由不持有状态和冷冻期状态进行推导,它可以是。原创 2023-10-14 18:11:24 · 136 阅读 · 0 评论 -
一篇文章带你用动态规划解决打家劫舍问题
现在我们只需要指定两套方案,一套是从第一间偷到倒数第二间房子,另一套是从第二间偷到最后一间房子,然后比较两套方案哪个偷到的金额更大即可。(看起来把屋子围起来了让小偷偷到钱财的难度增加了,但实际上小偷只需要转变一下思路也可以偷到很多钱 ^ ^ )这道题还是有点难度的,既用到了动态规划又用到了二叉树的知识,但是结合上核心思想还是很简单的。ok解决完动态规划的部分接下来来看二叉树的部分需要解决的问题 —— 遍历顺序。到这里动态规划需要解决的问题就解决了。答案是可以的,以题目的示例二举例。这道题实际上是第一题的。原创 2023-10-14 16:05:03 · 318 阅读 · 0 评论 -
贪心算法总结归类(图文解析)
如果使用暴力的解法,那么本题是通过不了的那怎么使用求得局部最优从而推导出全局最优呢?注意:题意中提到了这么一句话如果,我们可以将这个饼干j分配给孩子i,这个孩子会得到满足假如说每次分给孩子的饼干都是刚好满足这个条件,也就是说让所以本题的代码应该这么写:让s和g排好序后,都选择从后向前遍历两个数组,从而实现这题就很简单了,直接上思想:使用局部最优推出全局最优局部最优:使用while循环,每次循环找出最小的数字并将它的符号进行转换(负数变成正数/正数变成负数)全局最优:返回数组。原创 2023-09-25 23:17:30 · 540 阅读 · 0 评论 -
组合问题总结
我们的终止条件是当字符串中出现了三个分割点时就添加到结果集中,这里要注意的是由于我们判断子串是否合法的时候判断的是分割点前面的子串而不是分割点后面的子串所以很有可能会出现下面这种情况。我们的回溯函数里面for循环的代码编写同之前的解法是一样的,首先判断该子串是否合法,如果合法就进入到下一层递归进行分割,如果不合法那么就直接跳出递归,回溯到上一层。这题的解题思路实际上还是用到回溯算法,但是我们在纵向遍历的时候需要时注意的是传递到下一层递归的起始位置与传递的起始位置相同,原创 2023-09-10 15:47:39 · 88 阅读 · 0 评论 -
一篇文章带你搞懂KMP算法
KMP算法的核心思路是利用已经知道的信息来进行重新匹配从而避免从头匹配原创 2023-08-16 16:49:43 · 59 阅读 · 0 评论 -
代码随想录二刷Day2总结博客(长度最小的子数组、螺旋矩阵 II、移除链表元素)
这道题目的思路我们使用滑动窗口的方式,通过不断滑动的窗口来确定最小的长度是多少。通过不断地滑动窗口就可以尝试获取到最小子数组的长度。这道题的思路其实就是不断地模拟这个过程旋转的。以示例为例子,分析过程如下。1.怎么样来保证窗口的滑动。2.怎么样来保证窗口的收缩。3.怎么样来记录窗口的长度。原创 2023-08-02 23:40:20 · 42 阅读 · 0 评论 -
代码随想录二刷博客Day3~Day4
这里需要注意的是while里面的终止条件,由于我们不知道链表的长度是奇数还是偶数,这个就需要注意cur是否会操作空指针,由于我们要交换的链表节点有两个,所以我们要保证两个节点都不为空,所以这里的终止条件就是。设置两个指针来记录我们要交换的节点,在我们两两交换完毕以后,需要对后面的链表进行操作,所以我们也需要一个指针来记录后面链表的头节点的位置,以方便我们进行修改指向。通过不同的示例我们可以发现,两个链表相交前的长度是不一样的,那么我们为了让他们的起始下标一致,可以让长的链表走n步,原创 2023-08-08 23:19:43 · 100 阅读 · 0 评论