三刷专题

代码随想三刷回溯篇2

代码随想三刷回溯篇2 39. 组合总和题目代码 40. 组合总和 II题目代码 131. 分割回文串题目代码 93. 复原 IP 地址题目代码 78. 子集题目代码 39. 组合总和 题目 链接 代码 class Solution {public List<List<Integer>> combinationSum(int[] candidates

代码随想三刷二叉树篇4

代码随想三刷二叉树篇4 617. 合并二叉树题目代码 700. 二叉搜索树中的搜索题目代码 98. 验证二叉搜索树题目代码 530. 二叉搜索树的最小绝对差题目代码 501. 二叉搜索树中的众数题目代码 236. 二叉树的最近公共祖先题目代码 617. 合并二叉树 题目 链接 代码 /*** Definition for a binary tree node.* publ

代码随想录三刷day55

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言`轮转数组分为左移和右移` 一、力扣189. 轮转数组二、力扣724. 寻找数组的中心下标三、力扣34. 在排序数组中查找元素的第一个和最后一个位置四、力扣922. 按奇偶排序数组 II 前言 轮转数组分为左移和右移 一、力扣189. 轮转数组 轮转数组分为左移和右移 class S

代码随想三刷二叉树篇1

代码随想三刷二叉树篇1 144. 二叉树的前序遍历题目代码 145. 二叉树的后序遍历题目代码 94. 二叉树的中序遍历题目代码 102. 二叉树的层序遍历题目代码 107. 二叉树的层序遍历 II题目代码 199. 二叉树的右视图题目代码 637. 二叉树的层平均值题目代码 515. 在每个树行中找最大值题目代码 104. 二叉树的最大深度题目代码 111. 二叉树的最小深度题目代码 22

代码随想三刷字符串篇

代码随想三刷字符串篇 344. 反转字符串题目代码 541. 反转字符串 II题目代码 54. 替换数字(第八期模拟笔试)题目代码 151. 反转字符串中的单词题目代码 55. 右旋字符串(第八期模拟笔试题目代码 28. 实现 strStr()题目代码 459.重复的子字符串题目代码 344. 反转字符串 题目 链接 代码 class Solution {public v

代码随想录三刷day51

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣200. 岛屿数量二、力扣695. 岛屿的最大面积三、力扣1020. 飞地的数量四、力扣130. 被围绕的区域 前言 依然是从地图周边出发,将周边空格相邻的'O'都做上标记,然后在遍历一遍地图,遇到 'O' 且没做过标记的,那么都是地图中间的'O',全部改成'X'就行。 一、

代码随想录三刷day47

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣115. 不同的子序列二、力扣583. 两个字符串的删除操作三、力扣72. 编辑距离 前言 本周我们讲了动态规划之终极绝杀:编辑距离,为什么叫做终极绝杀呢? 细心的录友应该知道,我们在前三篇动态规划的文章就一直为 编辑距离 这道题目做铺垫 一、力扣115. 不同的子序列 c

代码随想录算法训练营三刷 day45 | 动态规划 之 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

三刷day45 70. 爬楼梯 (进阶)1. 确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp数组 322. 零钱兑换1. 确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组 279.完全平方数1. 确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍

代码随想录算法训练营三刷day44 | 动态规划之 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

三刷day44 完全背包基础知识问题描述举个栗子 518. 零钱兑换 II1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组 377. 组合总和 Ⅳ1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp数组 完全背包基础知识 问题描述 有N件物品和一个最多能背重量为W的背

代码随想录算法训练营三刷day42 | 动态规划之背包问题 416. 分割等和子集

三刷day42 416. 分割等和子集确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 416. 分割等和子集 题目链接 解题思路: 这是一维的背包问题 只有确定了如下四点,才能把01背包问题套到本题上来。 背包的体积为sum / 2背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值背包如果正好装满,说明找到了总和为

代码随想录算法训练营三刷day30|回溯 之 332.重新安排行程 51. N皇后 37. 解数独

三刷day30 332.重新安排行程51. N皇后37. 解数独 332.重新安排行程 题目链接 class Solution {private:// unordered_map<出发机场, map<到达机场, 航班次数>> targetsunordered_map<string, map<string, int>> targets;bool backtrackin

代码随想录算法训练营三刷day24 | 回溯算法 之 理论基础 77. 组合

三刷day24 理论基础77. 组合递归函数的返回值以及参数回溯函数终止条件单层搜索的过程 理论基础 回溯法解决的问题都可以抽象为树形结构。 因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。 递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。 回溯三部曲 回溯函数模板返回值以及参数 在回溯算法中,我的习惯是函

代码随想录三刷 day17 | 二叉树之110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

三刷day17 110.平衡二叉树257. 二叉树的所有路径404.左叶子之和 110.平衡二叉树 题目链接 解题思路: 求高度用后续遍历,先得到左子树和右子树的情况,然后再进行判断(左右中)使用递归遍历 代码如下: class Solution {public:// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1int getHeight(TreeN

代码随想录算法训练营三刷day13 |栈与队列 之 239. 滑动窗口最大值 347.前 K 个高频元素

三刷day13 239. 滑动窗口最大值347.前 K 个高频元素 239. 滑动窗口最大值 题目链接 解题思路: 设计单调队列的时候,pop和push操作要保持如下规则: pop(value):如果窗口移除的元素value等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作 push(value):如果push的元素value大于入口元素的数值,那么就将队列入

代码随想录三刷 day11 | 栈与队列之 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

三刷day11 20. 有效的括号1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值 20. 有效的括号 题目链接 解题思路: 有三种不匹配的情况: 第一种情况,字符串里左方向的括号多余了 。 第二种情况,括号没有多余,但是 括号的类型没有匹配上。 第三种情况,字符串里右方向的括号多余了,所以不匹配。 第一种情况:已经遍历完了字符串,但是栈不为空,说明有

代码随想录三刷day21

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣113. 路径总和 II二、力扣106. 从中序与后序遍历序列构造二叉树三、力扣105. 从前序与中序遍历序列构造二叉树四、力扣654. 最大二叉树 前言 构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。 一、力扣113. 路径总和 II /**

代码随想录三刷day04 | 链表之 24 两两交换链表中的节点 19删除链表的倒数第N个节点 面试题 02.07链表相交 142环形链表II

三刷day04 24. 两两交换链表中的节点19.删除链表的倒数第N个节点面试题 02.07. 链表相交142.环形链表II 24. 两两交换链表中的节点 题目链接 解题思路: 先将一些可能会改变的节点保存一下,然后再按照三个步骤就行修改 注意 要使用改变以后节点的指针(这个地方一刷的时候没注意到,稀里糊涂的过去了) 代码如下: class Solution {publ

代码随想录三刷day04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣209. 长度最小的子数组二、力扣904. 水果成篮三、力扣76. 最小覆盖子串 前言 接下来就开始介绍数组操作中另一个重要的方法:滑动窗口。 所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。 一、力扣209. 长度最小的子数组 class

代码随想录三刷day02

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣69. x 的平方根二、力扣367. 有效的完全平方数三、力扣27. 移除元素四、力扣26. 删除有序数组中的重复项 前言 双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 一、力扣69. x 的平方根 class Solutio

三刷操作系统之一文带你搞懂FreeRTOS——互斥信号量和递归互斥信号量

1.互斥信号量 互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。互斥信号量使用和二值信号量相同的 API 操作函数,所以

三刷操作系统之一文带你搞懂FreeRTOS——任务通知

1.任务通知 从 v8.2.0 版本开始,FreeRTOS 新增了任务通知(Task Notifictions)这个功能,可以使用任务通知来代替信号量、消息队列、事件标志组等这些东西。使用任务通知的话效率会更高。相对于以前使用 FreeRTOS 内核通信的资源,必须创建队列、二进制 信号量 、计数信 号量或事件组的情况,使用任务通知显然更灵活。 按照 FreeRTOS 官方的说法,使用任务 通