自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第44天(py)| 动态规划 | 322. 零钱兑换、279.完全平方数、139.单词拆分

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。

2024-06-20 10:56:09 265

原创 代码随想录算法训练营第43天(py)| 动态规划 | 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、爬楼梯

完全背包和01背包问题唯一不同的地方就是,。有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。01背包内嵌的循环是从大到小遍历,为了保证每个物品仅被添加一次。在01背包中,遍历物品在外层,遍历容量在内层;而在完全背包中,两个for遍历的先后顺序不影响.

2024-06-19 17:01:09 630

原创 代码随想录算法训练营第42天(py)| 动态规划 |1049. 最后一块石头的重量 II、494. 目标和、474.一和零

有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量。如果没有石头剩下,就返回 0。

2024-06-18 16:58:23 612

原创 代码随想录算法训练营第41天(py)| 动态规划 | 背包问题 二维、背包问题 一维(卡码)、416. 分割等和子集

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。确定dp数组含义使用二维数组,dp[i][j] 表示,价值总和最大是多少。确定递推公式如果如果。

2024-06-17 22:16:09 593

原创 代码随想录算法训练营第39天(py)| 动态规划 | 62.不同路径、 63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?

2024-06-15 11:22:28 337

原创 代码随想录算法训练营第38天(py)| 动态规划 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

如果某一问题有很多重叠子问题,使用动态规划是最有效的。要用一个dp数组来保存递归的结果。

2024-06-14 16:58:49 372

原创 代码随想录算法训练营第37天(py)| 贪心 | 56. 合并区间、 738.单调递增的数字

给出一个区间的集合,请合并所有重叠的区间。

2024-06-13 20:55:37 161

原创 代码随想录算法训练营第36天(py)| 贪心 | 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。可以射出的弓箭的数量 没有限制。

2024-06-12 22:21:27 354

原创 代码随想录算法训练营第35天(py)| 贪心 | 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i]。重复这个过程恰好 k 次。可以多次选择同一个下标 i。以这种方式修改数组后,返回数组 可能的最大和。

2024-06-11 22:34:18 313

原创 代码随想录算法训练营第32天(py)| 贪心 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。

2024-06-09 09:26:29 158

原创 代码随想录算法训练营第31天(py)| 贪心 | 455.分发饼干、376. 摆动序列、53. 最大子序和

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

2024-06-07 22:22:17 475

原创 代码随想录算法训练营第29天(py)| 回溯 | 491.递增子序列、46.全排列、47.全排列 II

给你一个整数数组 nums ,找出并返回所有该数组中不同的非递减子序列,至少有两个元素。你可以按 任意顺序 返回答案。

2024-06-06 10:14:40 262

原创 代码随想录算法训练营第28天(py)| 回溯 | 93.复原IP地址、78.子集、90.子集II

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的IP地址不能含有前导0,共有4个字段,且每个字段不能超过255。

2024-06-04 20:02:48 277

原创 代码随想录算法训练营第27天(py)| 回溯 | 39. 组合总和、40.组合总和II、131.分割回文串

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。

2024-06-03 20:10:49 369

原创 代码随想录算法训练营第25天(py)| 回溯 | 216.组合总和III、17.电话号码的字母组合

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

2024-06-03 16:35:52 307

原创 代码随想录算法训练营第24天(补充)(py)| 二叉树 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

2024-05-31 16:30:53 286

原创 代码随想录算法训练营第23天(py)| 回溯 | 理论基础、77. 组合

回溯是递归的副产品,只要有递归就会有回溯。回溯法解决的问题。回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。

2024-05-30 21:28:44 253

原创 代码随想录算法训练营第22天(py)| 二叉树 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L)

2024-05-29 22:21:02 650

原创 代码随想录算法训练营第21天(py)| 二叉树 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. *二叉树的最近公共祖先

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。

2024-05-28 20:32:46 216

原创 代码随想录算法训练营第20天(py)| 二叉树 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。

2024-05-27 17:15:52 272

原创 问题记录_stm32“No target connected“

在项目中找到__HAL_AFIO_REMAP_SWJ_DISABLE();stm32cubeMX生成代码时关闭了SWJ调试功能。然后短按复位键的同时点烧录。

2024-05-27 15:08:20 317

原创 FreeRTOS_软件定时器_学习笔记

软件定时器基于系统滴答终端(Tick Interrupt)有两种状态:运行(Running、Active)和冬眠(Dormant)有两种类型:一次性(One-shot)和自动加载(Auto-reload)示例:Timer1是一次性定时器,周期6tick,t1启动t7执行回调函数,然后冬眠Timer2是自动加载定时器,周期5tick,没经过一个周期执行一次回调函数。

2024-05-25 16:39:38 380

原创 FreeRTOS_任务通知_学习笔记

使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。使通知值+1,并使状态变为“pending”,表示有数据,待处理。每个任务有一个TCB结构体,里面包括通知状态和通知值。任务通知只能一个一个发任务,而且不能广播给多个任务。如果通知值为0则任务阻塞;通知值大于0则任务就绪。通知值可以是计数值,二进制位,任意数值。任务通知值,只能保持一个数据。数据智能给目标任务独享。等待,只能即刻返回错误。任务通知结构体中只有。暂时先记录简化版函数。

2024-05-25 15:04:16 262

原创 代码随想录算法训练营第十八天(py)| 二叉树 | 513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

2024-05-25 14:56:03 872

原创 代码随想录算法训练营第十七天(py)| 二叉树 | 110.平衡二叉树、 257. 二叉树的所有路径、404.左叶子之和

给定一个二叉树,判断它是否是 平衡二叉树(所有节点的左右子树深度不会超过1)

2024-05-24 16:55:12 211

原创 FreeRTOS_事件组_学习笔记

事件组是一个整数,其中的高8位留给内核,只能用其他位来表示时间每一位代表一个事件,且每个时间的含义由程序员决定1为发生,0为未发生一个/多个任务或ISR都能读写这些位可以等待某一位,也可以等待多个位事件组有作用,会唤醒所有复合条件的任务;而队列和信号量只会唤醒一个任务。事件组唤醒任务后,可以让事件不动,也可以清除事件。

2024-05-23 21:21:24 414

原创 FreeRTOS_互斥量_学习笔记

数值只有0或1谁获得互斥量,就必须由谁释放同一个互斥量。但其实在freeRTOS中,任务A获取的互斥锁,任务B也能释放。因此谁上锁谁开锁只是约定,在程序实现上不是强制的。"是指:多个任务同时调用它、任务和中断同时调用它,函数的运行也是安全的。可重入的函数也被称为"线程安全”(thread safe)。每个任务都维持自己的栈、自己的CPU寄存器,如果一个函数,那么它就是的。

2024-05-23 20:03:15 954

原创 代码随想录算法训练营第十六天(py)| 二叉树 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

2024-05-23 15:18:57 400

原创 代码随想录算法训练营第十五天(py)| 二叉树 | 层序遍历、226.翻转二叉树、101. 对称二叉树

队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。首先需明确,层序遍历的结果是一个数组数组,每一个元素为每一层的数组,形如创建一个levels保存所有层的结果,levels[level]保存每一层的结果。

2024-05-22 21:42:12 149

原创 FreeRTOS_信号量_学习笔记

消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示。套用队列笔记中的流水线例子,可以理解为流水线上工件的数量。信号:起通知作用量:还可以用来表示资源的数量当"量"没有限制时,它就是"计数型信号量"(Counting Semaphores)当"量"只有0、1两个取值时,它就是"二进制信号量"(Binary Semaphores)支持的动作:"give"给出资源,计数值加1;"take"获得资源,计数值减1。信号量分为二进制信号量和计数型信号量。

2024-05-22 16:46:38 406

原创 代码随想录算法训练营第十四天(py)| 二叉树 | 递归遍历、迭代遍历、统一迭代

只有度为0和2的节点,且度为0的节点在同一层。深度为k,有2^k-1个节点。

2024-05-21 22:04:50 346

原创 代码随想录算法训练营第十三天(py)| 239. 滑动窗口最大值、347.前 K 个高频元素

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值。

2024-05-20 21:18:29 344

原创 FreeRTOS_同步互斥与通信_队列集_学习笔记

在本例程中,先通过RotaryEncoder_IRQ_Callback(void)写队列B,再通过任务RotaryEncoder_Task读队列B,经过处理后再写队列A。InputTask先读取队列集S,它的返回值是一个队列句柄,这样就可以知道哪个队列有有数据了;队列集的本质也是队列,只不过里面存放的是“队列句柄”。这样,写队列A的时候,会顺便把队列A的句柄写入队列集S。这样,写队列B的时候,会顺便把队列B的句柄写入队列集S。创建队列集S,它的长度是“n1+n2”把队列A、B加入队列集S。

2024-05-20 17:56:37 444

原创 FreeRTOS_同步互斥与通信_环形buffer、队列_学习笔记

信号量、互斥量的本质是队列,队列的本质是加强版环形缓冲区。

2024-05-20 15:40:44 780

原创 FreeRTOS_同步互斥与通信_概念_学习笔记

一句话理解同步与互斥:我厕所,我厕所。什么叫同步?就是:我正在用厕所,你等会。什么叫互斥?就是:我正在用厕所,你不能进来。同步与互斥经常放在一起讲,是因为它们之的关系很大, “互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“互斥”吗?同一时间只能有一个人使用的资源,被称为。比如任务A、 B都要使用串口来打印,串口就是临界资源。

2024-05-18 15:13:39 308

原创 代码随想录算法训练营第十一天(py)| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。

2024-05-18 10:23:14 314

原创 代码随想录算法训练营第十天(py)|栈与队列| 232.用栈实现队列、225. 用队列实现栈

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true;否则,返回 false。

2024-05-17 20:44:01 237

原创 FreeRTOS_任务管理_任务调度_学习笔记

【代码】FreeRTOS_任务管理_任务调度_学习笔记。

2024-05-17 10:32:27 247

原创 FreeRTOS_任务管理_任务优先级与状态_学习笔记

常用的延时函数有两种,mdelay(time)和vTaskDelay(tick_period),前者用延时时间作为输入,后者用几个tick作为输入,也可以用vTaskDelay(pdMS_TO_TICKS(time))实现输入延时时间。调度器必须能找到一个可以运行的任务,当使用vTaskStartScheduler()函数来创建、启动调度器时,这个函数内部会创建空闲任务。在等待事件过程中,它不消耗 CPU 资源,这个任务就处于。在日常生活的例子中,母亲在电脑前跟同事沟通时,如果同事一直没回复,那么母亲的。

2024-05-16 15:59:23 543

原创 FreeRTOS_任务管理_任务创建与删除_学习笔记

然后在MX_FREERTOS_Init中使用函数创建三个任务即可。但由于LCD_PrintString耗时非常长,RTOS很有可能在期间跳出执行另一个任务,导致IIC传输中断。实现三个任务:1.静态创建任务,调用LED_Test。IRReceiver_Test、LED_Test、ColorLED_Test是另外写好的,我们暂时不关心。不同操作系统创建任务的函数不一样,为了统一处理,则创建一个统一接口层,即cmsis_os2。osThreadNew会自动根据不同的操作系统去调用响应的任务创建函数。

2024-05-16 14:04:41 524

空空如也

空空如也

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

TA关注的人

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