代码随想录刷题
文章平均质量分 74
日常刷题
Kkkuu..
这个作者很懒,什么都没留下…
展开
-
代码随想录Day17 图论-3
学习并查集 我们就要知道并查集可以解决什么问题以下是代码模板在并查集中find是寻找根的操作如下图第二步 8的根是1 3的根就是3 所以加入之后由1指向3。原创 2024-09-28 21:07:54 · 1232 阅读 · 0 评论 -
代码随想录Day17 图论-2
本题思路很简单 要求我们找到可以满足到达两个边界的单元格的坐标有一个优化的思路就是 我们从边界的节点向中间遍历 然后用两个数组表示 一个是第一组边界的数组 一个是第二边界的数组 如果两个数组都遍历到了某一个单元格 就说明该单元格时满足题目要求的。原创 2024-09-24 20:26:51 · 541 阅读 · 0 评论 -
代码随想录Day17 图论-1
做图论这部分的题目DFS和BFS少不了DFS是深搜 沿着一条路一直搜索下去直到无法继续向下 再通过回溯 换一条路进行搜索BFS是广搜 就是从当前节点出发 一直把当前节点所连接的所有节点都搜索过之后 进入下一节点在开始相同的搜索过程。原创 2024-09-23 21:40:25 · 587 阅读 · 0 评论 -
代码随想录Day16 单调栈
该题的题意很简单 要求遍历温度数组 找出几天后会出现下一次更高的温度 这就可以用到单调栈的知识那么我们该如何实现单调栈呢 该题目栈内保存的肯定是元素的下标 因为这样相减就可以得到几天后会出现更高的温度 0先放入栈底 然后遍历到74 通过栈顶的下标找到栈顶元素是73 因为74大于73所以ans数组下标为栈顶的下标放入1-0=1 一次类推 如果遍历的元素小于等于栈顶的元素 就要一次入栈 满足单调栈为单调递增的时候 可以求出数组右边第一个大于自己元素的位置。原创 2024-09-22 11:49:51 · 642 阅读 · 0 评论 -
代码随想录Day15 动态规划--5
子序列要求可以不是连续的 如果题目中说的是子数组则要求元素是连续的。原创 2024-09-18 22:31:03 · 1438 阅读 · 0 评论 -
代码随想录Day15 动态规划--4
通用的解法都是动态规划 暴力或者贪心都只适用于个别的场景对于股票问题最重要的是要确定每一天有多少个状态分清状态代码就很清晰。原创 2024-09-17 21:16:08 · 352 阅读 · 0 评论 -
代码随想录Day15 动态规划--3
我们以198这道题来分析动态规划在打家劫舍里面的应用 题意很简单 我们不能偷相邻的房间 只能隔着一个房间偷 然后要求我们偷的价值最大 根据做题的步骤 我们可以清晰的确定dp数组的含义是 在当前房间所可以偷到的最大价值 并且当前房间可以偷盗的价值与前两个房间是有关的 是前一个房间所偷盗的价值和前前一个房间加上该房间价值的最大值 所以我们初始化的时候 要把最开始0和1的房间初始化。打家劫舍2 是一个成环的数组 这就涉及到了两种情况 取首不取尾和取尾不取首这两种情况 然后我们最后只需要返回这两个情况的最大值。原创 2024-09-16 15:14:27 · 187 阅读 · 0 评论 -
代码随想录Day15 动态规划--2
两块石头相撞等价于两组石头相撞 所以我们只要求出来两组石头相撞最小重量 就代表两组重量相近就是最小的即我们要越接近总重量的一半 这样就可以抽象成一个背包问题public:i++) {j--) {原创 2024-09-15 18:18:09 · 905 阅读 · 0 评论 -
代码随想录Day14 动态规划--1
动态规划实质就是动态数组里面的每一个状态都是根据前一个状态来推导出来的对于动态规划的问题 有以下5个解题步骤1.明确dp数组的含义以及其下标的含义2.确定递推公式3.dp数组应该如何初始化4.确定遍历顺序5.举例推导dp数组。原创 2024-08-28 10:51:02 · 430 阅读 · 0 评论 -
代码随想录Day13 贪心算法--3
如上图所示 我们可以先用每一个气球的左边界来对气球进行一个排序 然后我们就可以开始遍历整个序列 我们看当前气球的左边界是否大于前一个气球的右边界 如果大于 就说明两者不重叠 那么弓箭数就要加1 如果不大于 就说明两者重叠 此时我们应该更新一下重叠气球的最小右边界 也就是取两个气球右边界的最小值(因为可以存在【1,4】 【2,3】这样的情况)原创 2024-08-27 17:32:26 · 533 阅读 · 0 评论 -
代码随想录Day11 贪心算法--1
该题目的目标是尽可能的满足越多数量的孩子 所以我们可以先给孩子和饼干排序 然后从后遍历孩子数组 从最大的饼干开始判断 如果可以满足就往前 如果不能满足 饼干数组就不动 孩子数组往前遍历(代码很简单)原创 2024-08-19 10:24:37 · 439 阅读 · 0 评论 -
代码随想录Day10 回溯算法--1
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。原创 2024-08-16 16:38:05 · 805 阅读 · 0 评论 -
代码随想录Day9 二叉树--4
二叉树章节终于结束了 到时候自己重写代码的时候估计又要老实了。原创 2024-08-02 22:32:59 · 408 阅读 · 0 评论 -
代码随想录Day8 二叉树--3
这题思路比较清晰 同时遍历两个二叉树从根节点开始 可以重新定义一个根节点。原创 2024-08-02 22:11:38 · 300 阅读 · 0 评论 -
代码随想录Day7 二叉树--2
我比较喜欢用迭代的方法来做题目 因为有的用递归法真的理解不了 这道题用迭代的方法思路很清晰 首先就是判断根节点 判断结束后 用层序遍历的方式 用一个队列que 放入根节点的左右孩子 然后开始进入while当队列里面不为空的时候 用两个临时的节点 接受队列出口的两个节点(即左孩子和右孩子)if判断 当左右孩子都为空 则continue 若左右孩子有一个为空 或者都不为空但是左右孩子的值不相等 返回false 最后按顺序加入左节点的左孩子 右节点的右孩子 左节点的右孩子 右节点的左孩子。原创 2024-07-29 00:55:02 · 882 阅读 · 0 评论 -
代码随想录Day6 二叉树--1
int val;原创 2024-07-27 21:15:00 · 627 阅读 · 1 评论 -
代码随想录Day5 栈和队列
对于栈的经典题目 差不多就是括号匹配 或者什么算后缀表达式 总之就是如果相匹配就弹出栈 如果匹配失败 就压入栈对于队列来说单调队列 优先队列是要掌握的t=N7T8优先队列详解https://blog.csdn.net/weixin_52115456/article/details/127606811?原创 2024-07-25 22:47:46 · 972 阅读 · 1 评论 -
KMP算法--力扣28来理解KMP算法
getnext函数求next数组 然后两个指针i j分别遍历文本串和模式串 如遇到不匹配的情况 j根据所求的next数组回退到j所在下标的值(因为我前缀表统一减一 相当于回退到下标所在的值 后面匹配的时候是匹配s[j+1]) 如果字符相匹配 则j++继续向后匹配 如果满足条件则输出。先求next数组(前缀表统一减一)初始化next数组 i从下标1的地方开始向后遍历 判断是否需要回退 如果不匹配 j需要回退 由于我们前缀表统一减一 所以直接回退到j下标的值(匹配的是s[j+1]) 如果匹配 j++;原创 2024-07-24 13:27:44 · 620 阅读 · 0 评论 -
代码随想录Day4 字符串
反转字符串 reverseStr1方法是根据区间反转字符串。原创 2024-07-24 13:04:27 · 196 阅读 · 0 评论