自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

喜欢vxworks的一个普通人

该博客主要做一些与嵌入式相关的总结方便自己复盘和查阅,不喜勿喷,欢迎讨论。

  • 博客(44)
  • 收藏
  • 关注

原创 代码随想录第四十一天(一刷&&C语言)|打家劫舍&&打家劫舍II&&打家劫舍III

偷第i房间,dp[i] = dp[i - 2] + nums[i] ,即:第i-1房不考虑,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。如果不偷第i房间,那么dp[i] = dp[i - 1]。取dp[i]最大值,即dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);dp[0] 一定是 nums[0],dp[1]是nums[0]和nums[1]的最大值即:dp[1] = max(nums[0], nums[1])。

2023-12-25 18:46:47 592

原创 代码随想录第四十天(一刷&&C语言)|单词拆分

3、dp数组如何初始化:dp[i] 的状态依靠 dp[j]是否为true,dp[0]一定要为true,否则递推下去后面都都是false了。2、确定递推公式:递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = true。4、确定遍历顺序: 题目中是拆分为一个或多个在字典中出现的单词,所以这是完全背包。1、确定dp数组以及下标的含义:dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。

2023-12-24 21:04:13 532

原创 代码随想录第三十九天(一刷&&C语言)|零钱兑换&&完全平方数

2、确定递推公式:凑足总额为j - coins[i]的最少个数为dp[j - coins[i]],那么只需要加上一个钱币coins[i]即dp[j - coins[i]] + 1就是dp[j]。dp[j] 要取所有 dp[j - coins[i]] + 1 中最小的。2、确定递推公式:dp[j] 可以由dp[j - i * i]推出, dp[j - i * i] + 1 可以凑成dp[j]。选择最小的dp[j],所以递推公式为dp[j] = min(dp[j - i * i] + 1, dp[j])。

2023-12-23 20:07:36 730

原创 代码随想录第三十八天(一刷&&C语言)|零钱兑换II&&组合总数和 IV

3、dp数组如何初始化:由递推公式dp[i] += dp[i - nums[j]]知dp[0]初始化为1,非0下标的dp[i]初始化为0,这样才不会影响dp[i]累加dp[i - nums[j]]。3、dp数组如何初始化:dp[0] = 1理解为凑成总金额0的货币组合数为1,其余下标dp[j]初始化为0,这样累计加dp[j - coins[i]]时不会影响dp[j]。2、确定递推公式:dp[j] 就是所有的dp[j - coins[i]]相加,递推公式为dp[j] += dp[j - coins[i]]。

2023-12-22 23:05:45 611

原创 代码随想录第三十七天(一刷&&C语言)|最后一块石头的重量&&目标和&&一和零

因为重量都不会是负数,所以dp[j]都初始化为0,这样在递归公式dp[j] = max(dp[j], dp[j - stones[i]] + stones[i])中dp[j]才不会初始值所覆盖。在遍历的过程中,取dp[i][j]的最大值。所以递推公式:dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);也可以使用二维dp数组来求解,dp[i][j]表示使用 下标为[0, i]的nums[i]能够凑满j容量的包,有dp[i][j]种方法。

2023-12-21 22:37:11 1523

原创 代码随想录第三十六天(一刷&&C语言)|背包问题理论基础&&分割等和子集

故而递推公式:dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);(2)放物品i:dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]的时候不放物品i的最大价值,故背包放物品i得到的最大价值是dp[i - 1][j - weight[i]] + value[i] (物品i的价值)。故递归公式为: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i])。

2023-12-19 22:52:54 1241

原创 代码随想录第三十五天(一刷&&C语言)|整数拆分&&不同的二叉搜索树

2、确定递推公式:dp[i] += dp[j - 1] * dp[i - j] ,j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量。3、dp数组的初始化:空节点也是一棵二叉树,也是一棵二叉搜索树。3、dp数组的初始化:初始化dp[2] = 1,从dp[i]的定义来说,拆分数字2,得到的最大乘积是1。1、确定dp数组及其下标的含义:1到i为节点组成的二叉搜索树的个数为dp[i]。

2023-12-18 22:30:44 518

原创 代码随想录第三十四天(一刷&&C语言)|不同路径&&不同路径II

2、确定递推公式:因为dp[i][j]只有这两个方向过来,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。(i, j)如果是障碍应该保持初始状态为0。1、确定dp数组(dp table)以及下标的含义:dp[i][j] :表示从(0,0)出发,到(i, j) 有dp[i][j]条不同的路径。2、确定递推公式:因为dp[i][j]只有这两个方向过来,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。5、举例dp数组:自己举例m,n的值推导dp数组。

2023-12-17 22:39:47 601

原创 代码随想录第三十三天(一刷&&C语言)|斐波那契数&&爬楼梯&&使用最小花费爬楼梯

2、确定递推公式为:dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])。4、从递归公式可以看出,dp[i]是依赖于 dp[i - 1] 和 dp[i - 2],遍历的顺序为从前到后遍历。3、dp数组初始化:不初始化dp[0],只初始化dp[1] = 1,dp[2] = 2,从i = 3开始递推。2、递推公式为: dp[i] = dp[i - 1] + dp[i - 2]。1、dp[i]的定义为: 爬到第i层楼梯,有dp[i]种方法。

2023-12-15 22:02:10 1668

原创 代码随想录第三十二天(一刷&&C语言)|单调递增的数字

当strNum[i - 1] > strNum[i](非单调递增),先让strNum[i - 1]--,再strNum[i]=9。再确定是从后向前遍历。

2023-12-14 21:21:40 646

原创 代码随想录第三十一天(一刷&&C语言)|无重叠区间&&划分字母区间&&合并区间

即intervals[i]的左边界 <= intervals[i - 1]的右边界,则一定有重叠。合并区间后左边界和右边界,作为一个新的区间,加入到result数组里。如果没有合并就把原区间加入到result数组。统计每一个字符最后出现的位置,从头遍历字符,并更新字符的最远出现下标。如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点。按照右边界排序,从左向右记录非交叉区间的个数。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数了。按照左边界从小到大排序之后,如果。

2023-12-13 23:53:21 665

原创 代码随想录第三十天(一刷&&C语言)|柠檬水找零&&根据身高重建队列&&用最少数量的箭引爆气球

账单是10,消耗一个5,增加一个10账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5。情况三有贪心策略,要优先消耗一个10和一个5,因为10美元只能给账单20找零,而5美元可以给账单10和账单20找零,美元5更通用。局部最优:当气球出现重叠,一起射,所用弓箭最少。按身高排序后,优先按身高高的people的k来插入,后续插入节点也不会影响前面已插入的节点。const void*的技巧在使用的时候进行强制类型转换的方法可以借鉴一下,做题主要是要模拟过程发现规律再变无序为有序,最后使用代码实现。

2023-12-12 22:59:13 548

原创 代码随想录第二十九天(一刷&&C语言)|K次取反后最大化的数组和&&加油站&&分发糖果

i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。取candyVec[i + 1] + 1 和 candyVec[i] 最大的糖果数量,candyVec[i]只有取最大的才能既保持对左边candyVec[i - 1]的糖果多,也比右边candyVec[i + 1]的糖果多。candyVec[i]与candyVec[i-1]比较。

2023-12-11 23:52:00 1137

原创 代码随想录第二十八天(一刷&&C语言)|买卖股票的最佳时机II&&跳跃游戏&&跳跃游戏II

问题转化为跳跃覆盖范围究竟可不可以覆盖到终点。每次移动取最大跳跃步数(得到最大的覆盖范围)每移动一个单位,就更新最大覆盖范围。贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。把利润分解为每天为单位的维度,而不是从 0 天到第 3 天整体去考虑。局部最优:收集每天的正利润,全局最优:求得最大利润。找到等效可以替代的思路,是解题必须要思考的点。:参考ledcode题解。

2023-12-10 19:55:01 599

原创 vxworks常用的指令归纳

个人部分常用的指令归纳,起到引导的作用,方便自己查阅

2023-12-09 22:35:36 1479

原创 代码随想录第二十七天(一刷&&C语言)|分发饼干&&摆动序列&&最大子数组和

局部最优:当前连续和为负数时舍弃,从下一个元素重新计算连续和,负数会使连续和变小。遍历 nums,从头开始用 count 累积,如果 count 一旦加上 nums[i]变为负数,那么就从 nums[i+1]开始从 0 累积 count 了。局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。再从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值。

2023-12-08 13:12:08 570

原创 代码随想录第二十六天(一刷&&C语言)|N皇后&&解数独

二维矩阵中矩阵的高就是这棵树的高度,矩阵的宽就是树形结构中每一个节点的宽度。二维数组result来记录最终结果。参数n是棋盘的大小,用row来记录当前遍历到棋盘的第几层了。递归深度就是row控制棋盘的行,每一层里for循环的col控制棋盘的列,由此确定皇后的位置。使用bool变量在解数独时找到一个符合的条件(就在树的叶子节点上)立刻就返回,相当于找从根节点到叶子节点一条唯一路径。一个for循环遍历棋盘的行,一个for循环遍历棋盘的列,一行一列确定下来之后,递归遍历这个位置放9个数字的可能性。

2023-12-07 13:20:10 518

原创 代码随想录第二十五天(一刷&&C语言)|递增子序列&&全排列&&全排列II

当收集元素的数组path的大小和nums数组一样大时,说明找到了一个全排列,也表示到达了叶子节点。排列问题每次都要从头开始搜索,used数组就是记录path里有哪些元素使用了,一个排列里一个元素只能使用一次。已经是递增序列故而不用排序,元素不能重复使用,需要startIndex,调整下一层递归的起始位置。通过树形结构了解到,同一层元素使用过就不能再使用了。与全排列的区别在于给定一个可重复数字的序列,要返回所有不重复的全排列(去重)。而且去重一定要对元素进行排序,通过相邻的节点来判断元素是否重复使用了。

2023-12-06 13:14:23 553

原创 代码随想录第二十四天(一刷&&C语言)|复原IP地址&&子集&&子集II

全局变量数组path为子集收集元素,二维数组result存放子集组合,递归参数startIndex。startIndex已经大于数组的长度了,就终止了。使用startIndex记录下一层递归分割的起始位置。使用pointNum,记录添加分隔符的数量。递归调用时,下一层递归的startIndex要从i+2开始(因为需要在字符串中加入了分隔符。),同时记录分割符的数量pointNum 要 +1。回溯的时候,就将刚刚加入的分隔符。在子集的基础之上要添加去重处理,使用used数组来去重。加油,坚持就是胜利。

2023-12-05 13:27:58 590

原创 代码随想录第二十三天(一刷&&C语言)|组合总数&&组合总数II&&分割回文串

递归函数参数还需要startIndex,切割过的地方,不能重复切割,和组合问题一样。切割问题的回溯搜索的过程和组合问题的回溯搜索类似。一刷的话基本上做不出来什么题目,照着carl的文档进行理解然后几乎是照着文档将题目AC的,但是这些似乎都不重要,有时候坚持会更好。1、组合问题:选取一个a之后,在bcdef中再去选取第二个,选取b之后在cdef中再选取第三个.....。2、切割问题:切割一个a之后,在bcdef中再去切割第二段,切割b之后在cdef中再切割第三段.....。

2023-12-04 13:42:30 619

原创 Vxworks6.9的在线gdb调试(仿真内核和板载内核)

1、任务挂掉或者触发异常记得设置开关量,用于查看和定位程序中的异常,来进行调试,删除or重启任务以及其他的调试指令。2、可以在写应用程序的时候添加异常处理功能,重启任务or加入WTD,避免多次的重启板卡,使用d的功能级二行lookup查找验证。3、任务调度验证条件可以固定,设置手动触发或者定时触发任务,不让任务一直pend,这样验证不了交互逻辑。4、实际项目开发中除了DKM、RTP工程外额外搭建Sim的DKM工程,进行逻辑验证,使用close project功能可以避免多个c文件的干扰。

2023-12-03 19:49:23 1789

原创 代码随想录第二十二天(一刷&&C语言)|组合总数&&电话号码的字母组合

3、需要一个字符串s来收集叶子节点的结果,然后用一个字符串数组result保存起来。1、需要一维数组path来存放符合条件的结果,二维数组result来存放结果集。1、定义一个二维数组,例如:string letterMap[10],来做映射。4、sum 为已经收集的元素的总和,也就是path里元素的总和。5、startIndex 为下一层for循环搜索的起始位置。2、targetSum 目标和,也就是题目中的n。3、k 就是题目中要求k个数的集合。:参考carl文档和视频。:参考carl文档和视频。

2023-12-02 23:24:00 664

原创 代码随想录第二十一天(一刷&&C语言)|回溯算法&&组合

函数返回值一般为void,回溯算的参数一般是先写逻辑,然后需要什么参数,就填什么参数。回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。做起来有点蒙,不是很能理解其中的奥妙,希望通过后续的刷题能理清思路。回溯法解决的问题均可以抽象为树形结构(N叉树)回溯与递归方法和步骤类似,回溯是暴力查找,效率不高。:C解法参考了ledcode官方题解。排列、组合、分割、子集、棋盘问题。

2023-12-01 09:22:37 758

原创 代码随想录第二十天(一刷&&C语言)|修剪二叉搜索树&&将有序数组转换为二叉搜索树&&把二叉搜索树转换为累加树

使用递归的方法,不停的判断节点与所给区间是否相符,相符则对本节点的做右节点做递归操作并返回本节点。二叉树篇章到此结束,收获还是比较大的,坚持下去后面提升会更大。:寻找分割点,分割点作为当前节点,再递归左区间和右区间。:累加的顺序是右中左,反中序遍历二叉树,再顺序累加。

2023-11-30 13:31:16 511

原创 代码随想录第十九天(一刷&&C语言)|二叉搜索树的最近公共祖先&&二叉搜索树中的插入操作&&删除二叉搜索树中的节点

参考了ledcode题解和carl的文档,二叉搜索树符合中序遍历,不用使用回溯,可以方便的从上向下查找目标区间,遇到目标区间内的节点,直接返回。:利用搜索树的中序遍历特性,使用cur节点为循环条件,去寻找cur->left与cur->right为空的地方,创建新节点并赋val。通过二叉搜索树的公共祖先,复习了一下二维指针解题的便利。解题留意一下给定值的比较,坚持刷下去,收获会更多。:比较给定值与节点值的大小,不相等则递归。

2023-11-29 09:22:14 517 1

原创 代码随想录第十八天(一刷&&C语言)|二叉搜索树的最小绝对差&&二叉搜索树中的众数&&二叉树的最近公共祖先

二叉搜索树是符合中序遍历的情况,然后可以使用pre和cur双指针来进行操作,二叉树的最近公共祖先则需要从下往上遍历使用回溯(后序遍历)且要遍历完整个二叉树。:求最小公共祖先需要从底向上遍历,只能通过后序遍历(回溯)实现从底向上的遍历方式。且在回溯的过程中,必然要遍历整棵二叉树。(参考了carl的文档):二叉搜索树从按左、中、右为升序,符合中序遍历的特点。参考了ledcode本题的官方题解。:二叉搜索树从按左、中、右为升序,符合中序遍历的特点,再使用双指针pre和cur。

2023-11-28 09:08:38 457 1

原创 代码随想录第十七天(一刷&&C语言)|最大二叉树&&合并二叉树&&二叉搜索树中的搜索&&验证二叉搜索树

在BST中找到root->val等于val的节点。返回以该节点为根的子树。若节点不存在,则返回 NULL。:两个节点重叠,值相加作为节点合并后的新值,但还要考虑到没有节点的情况,再分别对左右子树进行递归。以下两个解法参考carl的思路,测试均能过,但后续提交解答错误,留给自己之后有时间做思考。:中序遍历下输出的二叉搜索树节点的数值是有序序列,验证二叉搜索树就转换为判断是不是递增。:构造树采用前序遍历,先构造中间节点,再递归构造左子树和右子树。加油,坚持就是胜利。

2023-11-27 09:38:45 445

原创 代码随想录第十六天(一刷&&C语言)|找树左下角的值&&路径总和&&从中序与后序遍历序列构造二叉树

采用递归,判断targetSum == root->val,sum的值每次更新减去前一个val即可。:采用迭代的方法,代码参考的是ledcode题解。虽然难度在不断增加,但坚持下去总会有收获。

2023-11-26 13:47:22 475 1

原创 代码随想录第十五天(一刷&&C语言)|平衡二叉树&&二叉树的所有路径&&左叶子之和

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。多熟悉,似乎思路也变得清晰了一些,加油坚持就是胜利。

2023-11-25 18:31:00 352

原创 浅析Linux与VxWorks的区别

创作目的:按自己的理解简化和归纳,方便自己后续的复盘VxWorks 是美国Wind River System 公司的实时操作系统。Tornado与workbench是vxworks系统的开发环境,应用程序可以设置diab和gnu等编译器。Linux是类Unix计算机操作系统的统称,虚拟机搭建各类发行本常用makefile设置编译规则后用gcc编译。

2023-11-24 14:24:55 4099 1

原创 代码随想录第十四天(一刷&&C语言)|二叉树的最大深度&&二叉树的最小深度&&完全二叉树的节点个数

完全二叉树的节点个数c代码参考ledcode官方题解,最后AC的结果是超时,自己目前并没有很好的解决思路,鉴于一刷要求不高,留到以后再解决吧。:按ledcode题解所有使用深度优先算法。:依据于普通二叉树的逻辑。

2023-11-23 14:43:45 118

原创 代码随想录第十三天(一刷&&C语言)|翻转二叉树&&对称二叉树

采用的均为递归方法,今日的题目较为简单,进展比较顺利。最近由于项目工作压力大, 在有限的时间内将题目能够参考着题解进行AC也算有所收获。

2023-11-23 14:20:41 144

原创 代码随想录第十二天(一刷&&C语言)|二叉树的递归遍历

二叉树遍历分为深度优先遍历和广度优先遍历,本次记录了深度优先遍历的三种方法。:carl文档和官方题解。:carl文档和官方题解。:carl文档和官方题解。

2023-11-22 09:35:22 111

原创 代码随想录第十一天(一刷&&C语言)|滑动窗口最大值&&前k个高频元素

记录自己的学习历程,希望自己可以坚持把题都刷完。:参考了ledcode官方题解。:参考了ledcode官方题解。

2023-11-22 09:18:35 148

原创 代码随想录第十天(一刷&&C语言)|有效的括号&&删除字符串中的所有相邻重复项&&逆波兰表达式求值

AC不了看题解,虽然觉得很多题目做完就忘,但收获还是很大,坚持下去就会更好。:通过快慢指针的方法,来进行数组元素的比对和shanchu。:参考carl的文档和代码进行理解。:参考了该题ledcode的题解。

2023-11-21 21:33:48 117 1

原创 代码随想录第九天(一刷&&C语言)|用栈实现队列&&用队列实现栈

慢慢的有点感觉了,但是思路还是不清晰,主要目的还是方便自己复盘,坚持下去会不一样。:C代码参考了ledcode官方题解,然后思路就是构造结构,然后用指针操作。:自己有模糊的思路,看carl的文档理清了思路,然后照着去敲。

2023-11-21 09:23:15 123 1

原创 代码随想录第八天(一刷&&C语言)|串匹配下标&&重复的子串

一刷总是会遗忘,加上时间确实不足,能做到紧跟进度,坚持到最后也许会有不一样的结果。:熟悉KMP算法的思路,也查看了ledcode的题解。:了解KMP后,查看ledcode题解。

2023-11-20 09:11:14 181 1

原创 代码随想录第七天(一刷&&C语言)|反转字符串&&替换数字&&翻转字符串里的单词

时间总是很着急,但是能抽空出来理一下思路也很难得,只要能做到比前一天更好我也就满足了。最近确实很忙,基本上都是抽空过来写的。不知道以后的我看到现在写的文章作何感想,希望一切都会变好。:数组填充,先预先给数组扩容带填充后,再从后向前进行操作。目前只有c++代码,有时间可以转一下。对两个指针,一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。:在遍历字符串的过程中, 每次移动 2 * k ,再判断是否有反转的区间。主要参考carl的思路,进行理解后,将代码跑同,建立理解。

2023-11-15 13:30:03 110

原创 代码随想录第六天(一刷&&C语言)|四数相加&&赎金信&&三数之和&&四数之和

参考了ledcode的题解,利用两个数组分别记录两个字符串的元素个数,第一个字符串的元素个数<=第二个元素的个数,用第一个字符串中的每个元素的个数和第二个元素的个数去比较。基于三数之和的方法来写,参考了ledcod的题解,还不能做到自己独立编写。创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。

2023-11-15 08:46:01 498

原创 代码随想录第五天(一刷&&C语言)|有效的字母异位词&&两个数组的交集&&快乐数&&两数之和

题外:思路未明确,加上工作的压力,今天刷题脑袋很空,今天只是AC的题,后面一定要好好的再完善思路。创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。一、有效的字母异位词。

2023-11-13 23:31:31 40

空空如也

空空如也

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

TA关注的人

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