- 博客(46)
- 收藏
- 关注
原创 [BLE] Human Interface Device Protocol - Device
人机接口设备协议(Human Interface Device Protocol)是一个允许主机与外设设备(并非嵌入式设备常说的外设)之间进行通信,并使用外设设备对主机进行控制的协议,它最先被使用在通过USB设备通信的设备上。当出现了蓝牙协议后,HID又被移植到了蓝牙设备上,使得蓝牙设备间可以通过HID来相互通信,实现Device对Host的控制。本文所介绍的HID实际上是HID Over GATT Protocol(HOGP),即基于GATT的HID协议。
2024-05-21 21:22:28 816
原创 [BLE] Heart Rate Protocol - Sensor
Heart Rate Protocol(心率协议)是一种基于GATT的标准协议,心率收集设备可以通过心率协议从心率传感器收集设备。在心率协议中,设备有两种角色:Collector和Sensor。Sensor可以测量心率并将数据发送给Collector;Collector可以从Sensor获取心率数据和其它数据。
2024-05-04 12:26:28 1088
原创 [嵌入式学习随笔] 嵌入式开发中的注册机制
在进行嵌入式开发时,常常会需要根据事件来调用对应的处理函数。例如发送照片时,可以选择微信发送、小红书发送、qq发送等。这个流程可以通过很多种方法实现,但它们各自的优缺点是什么呢?
2024-03-31 23:13:55 489 1
原创 学习随笔#15 MPC控制MATLAB代码详解
MPC控制的详细数学推导可以参照文章:一个MPC详细建模的例子。MATLAB/SIMULINK中自带有MPC相关的工具,但本文给出MPC控制的MATLAB程序。function [M, C, Q_bar, R_bar, G, E, H, U_k] = MPC_Zero_Ref(A, B, N, x_k, Q, R, F)n = size(A, 1);p = size(B, 2);M = [eye(n); zeros(N * n, n)];C = zeros((N + 1) * n, N *
2023-02-18 17:50:00 859
原创 力扣做题记录——HOT100:11.盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。示例1输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例2输入:height = [1,1]输出:1提示n == height.lengt
2022-04-17 21:06:39 470
原创 力扣做题记录——HOT100:17.电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字符组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例1输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例2输入:digits = ""输出:[]示例3输入:digits = "2"输出:["a","b","c"]提示0 <= digits.length <= 4digits[i
2022-04-17 18:59:21 359
原创 力扣做题记录——647.回文子串&5.最长回文子串
由于这两题的解法相似,因此本文将直接介绍通用解法,并直接给出两道题的代码。方法1 动态规划法首先本题可以使用动态规划法:状态:dq[i][j]表示字符串在[i, j]区间内的子串是否是一个回文串;状态转移方程:当s[i] == s[j] && (j - i < 2 || dp[i + 1][j - 1])时,dp[i][j] = true,否则为false。解释:当只有一个字符时,比如a自然是一个字符串;当有两个字符时,如果两个字符相等,比如aa,也是一个回文串;
2022-04-04 21:36:18 406
原创 力扣刷题记录——49.字母异位词分组&43.字符串相乘
49.字母异位词分组给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例1输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例2输入: strs = [""]输出: [[""]]示例3输入: strs = ["a"]输
2022-04-03 12:34:12 411
原创 力扣做题记录——290.单词规律&763.划分字母区间
290.单词规律给定一种规律pattern和一个字符串str,判断str是否遵循相同的规律。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应规律。示例1输入: pattern = "abba", str = "dog cat cat dog"输出: true示例2输入:pattern = "abba", str = "dog cat cat fish"输出: false示例3输入: pattern = "aaaa", str
2022-04-02 17:11:11 323
原创 力扣做题记录——415.字符串相加
给定两个字符串形式的非负整数num1和num2,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如BigInteger), 也不能直接将输入的字符串转换为整数形式。示例1输入:num1 = "11", num2 = "123"输出:"134"示例2输入:num1 = "456", num2 = "77"输出:"533"示例3输入:num1 = "0", num2 = "0"输出:"0"提示1 <= num1.length, num2.len
2022-04-01 22:09:28 227
原创 力扣做题记录——334.递增的三元子序列&238.除自身以外数组的乘积&560.和为K的子数组
334.递增的三元子序列给你一个整数数组nums,判断这个数组中是否存在长度为3的递增子序列。如果存在这样的三元组下标(i, j, k)且满足i < j < k,使得nums[i] < nums[j] < nums[k],返回true;否则,返回false 。示例1输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例2输入:nums = [5,4,3,2,1]输出:false解释:不存在满足题
2022-04-01 12:23:50 134
原创 力扣做题笔记——剑2 32.从上到下打印二叉树Ⅰ&从上到下打印二叉树Ⅱ&从上到下打印二叉树Ⅲ
Ⅰ.从上到下打印二叉树Ⅰ从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:3,9,20,null,null,15,7, 返回:`[3,9,20,15,7]`**提示**1. `节点总数<=1000`思路很平常的广度优先遍历方法,使用一个队列记录每一层的节点。代码vector<int> levelOrder(TreeNode* root) { vector<int> res; if
2022-03-30 21:46:40 101
原创 力扣做题记录——169.多数元素&摩尔投票法
题目 给定一个大小为n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于n/2的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1输入:[3,2,3]输出:3示例2输入:[2,2,1,1,1,2,2]输出:2进阶尝试设计时间复杂度为O(n),空间复杂度为O(1)的算法解决此问题。方法哈希表依次统计表中每个数据出现的次数。int majorityElement(vector<int>& nums) { unordere
2022-03-28 09:55:10 199
原创 学习随笔#16 快速幂
快速幂(Exponentiation by squaring)是一种简单而有效的小算法,它可以以O(logn\mathrm{log}nlogn)的时间复杂度计算乘方。快速幂不仅本身非常常见,而且后续很多算法也都会用到快速幂。思考:7的10次方怎样算比较快?方法1:最简单的方法,将7自乘9次,很明显,这种方法的时间复杂度为O(n)O(n)O(n),是这道题能达到的最高的时间复杂度了。 那么有没有什么办法能够降低时间复杂度呢?方法2:710=75×757^{10}=7^5\times7^571
2022-03-26 22:08:47 186
原创 力扣做题记录——剑2 12.矩阵中的路径&13.机器人的运动范围
题目12.矩阵中的路径 给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的3×4的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。示例1输入:board = [["A","B","C","E"],["S","F","C","S"],["A",
2022-03-23 15:49:26 140
原创 力扣做题记录——剑2 07.重建二叉树
题目 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例1Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例2Input: preorder = [-1], inorder = [-1]Output: [-1]限制0 <= 节点个数 <= 5000思路 首先
2022-03-21 23:15:54 97
原创 力扣做题记录——剑2 06.从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例1输入:head = [1,3,2]输出:[2,3,1]限制0 <= 链表长度 <= 10000思路 我们知道,一个链表节点的定义中包含val和next两个成员变量,val是本节点的数据,next是下一节点的地址,链表只能从头到尾遍历而无法从尾到头遍历,因此这道题涉及到“反转”操作。那么就有两种思路,一种是反转链表,一种是反转数组。而反转数组又有两种思路,一种是先正向插入再反转,另一种是直接反向插
2022-03-21 11:45:16 1091
原创 学习随笔#14 一个MPC详细建模的例子
状态空间离散形态的一般表达形式为x(k+1)=Ax(k)+Bu(k)\boldsymbol{x}(k+1)=\boldsymbol{A}\boldsymbol{x}(k)+\boldsymbol{B}\boldsymbol{u}(k)x(k+1)=Ax(k)+Bu(k)公式中的矩阵大小及意义如下:变量名大小意义x(k+1)\boldsymbol{x}(k+1)x(k+1)n×1n\times1n×1k+1k+1k+1时刻系统的状态变量A\boldsymbol{A}A
2022-03-20 22:21:37 770
原创 力扣做题记录——剑2 05.替换空格
请实现一个函数,把字符串s中的每个空格替换成“%20”。示例1输入:s = "We are happy."输出:"We%20are%20happy."限制0 <= s的长度 <= 10000思路 第一个想法就是定义一个新的字符串,然后从前往后遍历s字符串,如果遍历到空格,就在新字符串中加上"%20",如果遍历到不是空格的字符,就将其加入新字符串。这个方法的时间复杂度是O(n),空间复杂度也是O(n)。 但是这道题还有更优的解法,我们可以使用原字符串,将空间复杂度降低至O
2022-03-20 18:23:18 344
原创 力扣做题记录——剑2 04.二维数组中的查找
在一个n*m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例现有矩阵matrix如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定target=5,返回true。给定t
2022-03-20 11:49:03 337
原创 学习随笔#13 模型预测控制(MPC)
MPC基本概念 模型预测控制(MPC)是指通过模型来预测系统在某一未来时间段内的表现来进行优化控制。MPC多用于数位控制,因此使用系统的离散型状态空间表达形式,即xk+1=Axk+Bukx_{k+1}=Ax_k+Bu_kxk+1=Axk+Buk。MPC一般分为3步:估计/测量读取当前的系统状态;基于uku_kuk、uk+1u_{k+1}uk+1、……、uk+nu_{k+n}uk+n来进行最优化;只取kkk时刻的系统输入uku_kuk,在k+1k+1k+1时刻,将控制区间(Cont
2022-03-20 00:41:23 6488
原创 力扣做题记录——剑2-03.数组中重复的数字
在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中的某些数字是重复的,但不知道有几个数字重复了,也不知道每个数组重复了几次。请找出数组中任意一个重复的数字。示例1:输入:[]2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000解答 本题虽然是简单题,但如果要在面试的时候遇到,可以多问面试官一句,他的需求是什么,如果是时间优先,那么可以使用字典来做;如果是空间优先,那么可以原地排序数组,然后遍历;如果要求时间复杂度O
2022-03-19 15:46:21 1150
原创 学习随笔#12 最优化控制(Optimal Control)
最优化控制(Optimal Control) 在约束条件下达到最优的系统表现。下图是一个单输入单输出(SISO)系统的控制系统框图。 在这个系统中,我们定义误差e(t)e(t)e(t)为参考信号r(t)r(t)r(t)与输出信号y(t)y(t)y(t)的差,即e(t)=y(t)−r(t)e(t)=y(t)-r(t)e(t)=y(t)−r(t)。如果我们使得∫0te2dt\int^t_0e^2\mathrm{d}t∫0te2dt越小,则系统的跟踪性能越好;如果使得∫0tu2dt\int_0^tu^
2022-03-19 13:22:35 2078
原创 力扣做题记录——121.买卖股票的最佳时机&动态规划总结
这道题和之前做过的70.爬楼梯类似,都是有关动态规划的问题,因此在此总结一下动态规划相关的问题。为什么要用动态规划?Those who cannot remember the past are condemned to repeat it.记不起过去的人注定要重蹈覆辙 如计算“1+1+1+1”和计算“1+1+1+1+1”时,显然在式1的基础上再加1来计算式2是比逐步计算更快的方法。可能使用这个例子理解不充分,若有从1开始计算1,1+1,……,231-1个1相加的值,逐步相加的运行速度会非常
2022-03-16 19:06:38 654
原创 力扣做题记录——算法入门day10
力扣做题记录——算法入门day1021.合并两个有序链表206.反转链表21.合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例2输入:l1 = [], l2 = []输出:[示例3输入:l1 = [], l2 = [0]输出:[0]提示两个链表的节点数目范围是[0, 50]-100 <= Node.va
2022-03-15 10:32:30 208
原创 力扣做题记录——算法入门day9
力扣做题记录——算法入门day9542.01矩阵994.腐烂的橘子542.01矩阵 给定一个由0和1组成的矩阵mat,请输出一个大小相同的矩阵,其中每一个格子是mat中对应位置元素到最近的0的距离。两个相邻元素间的距离为1。示例1输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例2输入:mat = [[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]
2022-03-13 18:43:32 211
原创 力扣做题记录——算法入门day8
力扣做题记录——算法入门day8617.合并二叉树116.填充每个节点的下一个右侧节点 今天的两道题主要和二叉树的结构有关。617.合并二叉树 给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。 注意: 合并过程必须从两个树的根节点
2022-03-12 12:51:30 259
原创 力扣做题记录——算法入门day7
力扣做题记录——算法入门day7733.图像渲染 今日的题目与图有关,主要是广度优先算法和深度优先算法。733.图像渲染 有一副以m x n的二维整数数组表示的图画image,其中image[m][n]表示该图画的像素值大小。你也被给予三个整数sr,sc和newColor。你应该从像素image[sr][sc]开始对图像进行上色填充。 为了完成上色工作,从初始像素开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像
2022-03-11 23:25:34 504
原创 学习随笔#8 深度优先算法和广度优先算法
深度优先算法和广度优先算法深度优先算法广度优先算法 图的存储结构有两种,一种是基于二维数组的邻接矩阵表示法,另一种是基于链表的邻接法。 在邻接矩阵中,可以如下表示顶点和边连接关系: 将顶点对应为下标,矩阵中元素的1表示两结点相连,0表示不相连。如图G5中,结点0和1、2、3都相连,所以矩阵的第一列依次为0、1、1、1。而结点2只和0、1相连,所以矩阵的第三列依次为1、1、0、0。图的邻接矩阵都是对称矩阵。深度优先算法 深度优先算法是一种基于邻接矩阵的遍历算法。遍历是指从图的某个顶点出发,
2022-03-10 21:30:56 655
原创 力扣做题记录——算法入门day6
力扣做题记录——算法入门day63.无重复字符的最长子串567.字符串的排列 今天的两道题都主要针对的双指针的滑动窗口方法,做得有些吃力,也暴露了自己滑动窗口掌握得不好的问题。3.无重复字符的最长子串 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度
2022-03-09 17:51:04 160
原创 力扣做题记录——算法入门day5
力扣做题记录——算法入门day5876.链表的中间结点19.删除链表的倒数第N个结点876.链表的中间结点 给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例1输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val =
2022-03-08 15:17:14 216
原创 力扣做题记录——算法入门day4
力扣做题记录——算法入门day4344.反转字符串557.反转字符串中的单词III344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。示例1输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]示例2输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n"
2022-03-07 15:55:26 547
原创 力扣做题记录——70.爬楼梯
70.爬楼梯题目 假设你正在爬楼梯,需要n阶你才能到达楼顶。每次你可以爬1或2个台阶,你有多少种方法可以爬到楼顶呢?示例1输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例2输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶提示1 <= n <= 45 本题的重点在于推导,从最后一步往前看,第n阶楼梯只能从第n-1或第
2022-03-06 23:25:58 240
原创 力扣做题记录——算法入门day3
力扣做题记录——算法入门day3283.移动零167.两数之和II-输入有序数组283.移动零 给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例2输入: nums = [0]输出: [0]提示1 <= nums.length <= 10^4-2^31 <= nums[i] <=
2022-03-06 12:17:25 531
原创 力扣做题记录——算法入门day1&2
力扣做题记录——算法入门day1&2Day1 二分查找704.二分查找功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Day1 二分查找704.二分查找题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个
2022-03-05 22:41:12 317
原创 CAIRDC6月20日直播总结《物流机器人的挑战与发展》
物流机器人的挑战与发展今日的讲座题目是物流机器人的挑战与发展,主讲人是港中文天石机器人研究所所长刘云辉老师。首先刘老师介绍了全球及中国物流市场的发展与展望,提出了物流机器人必须具备的能力:1.感知智能(Sensing and perception),即可靠、精准、鲁棒地对自然环境的感知能力;2. 移动智能(Mobility intelligence),即自然环境下的可靠移动能力;3. 操作技能(Manipulation skill),即可靠、准确地抓取、搬送、操作物体的技能。机器人必须具备的性质
2020-06-22 12:14:00 330
原创 CAIRDC6月21日直播总结《先进工业机器人技术与应用》
先进工业机器人技术与应用今日的讲座题目是先进工业机器人技术与应用,主讲人是中科院宁波材料所副所长杨桂林老师。先占个坑,今天的讲座干货满满,比20号的不知道高到哪里去了,等我消化整理一下再更新。...
2020-06-22 12:13:30 367
原创 学习随笔#7 机器人末端直线插补算法(基于IEC 61131-3)
插补是机器人最基础的功能,它分为直线插补和圆弧插补。插补中的位置由前三轴控制,姿态由后三轴控制。下面为直线插补的算法:IF GVL.yidong THEN GVL.L:=SQRT((GVL.XIn-GVL.X0)*(GVL.XIn-GVL.X0)+(GVL.YIn-GVL.Y0)*(GVL.YIn-GVL.Y0)+(GVL.ZIn-GVL.Z0)*(GVL.ZIn-GVL.Z0));//插补路...
2019-04-19 11:29:19 2138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人