自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++——合并K个升序链表leetcode23

使用归并排序中的合并步骤,写一个merge函数用于合并两个有序链表,并返回合并后的链表头部。对原vector,每次迭代都合并相邻的两个,如果最后剩下一个,就单着等下一轮,每次合并后,都把合并后的链表头部赋值给合并的第一个链表的vector位置,然后erase第二个,重复直到vector的size为1。输入:lists = [[1,4,5],[1,3,4],[2,6]]请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。输出:[1,1,2,3,4,4,5,6]

2024-07-09 13:09:44 190

原创 C++——二叉树的层序遍历leetcode102

使用一个队列(先入先出),每次循环取出上面一整层,然后存放下面一整层,也就是嵌套一个循环,广度优先搜索,给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输出:[[3],[9,20],[15,7]]也就是需要把是哪一层都标出来。

2024-07-09 01:11:45 178

原创 C++——二叉树的直径leetcode543

迭代,考虑写一个函数depth,输入二叉树中某个位置节点,返回以该节点为开始的最大长度,即向左或向右的最大深度,包括该节点。同时全局维护一个变量ans代表当前子树下的二叉树最大直径,则穿过该节点的二叉树最大直径为L+R,其中L为该节点左边不包括该节点的节点数,R为该节点右边不包括该节点的节点数。而ans=max(ans, L+R)二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。给你一棵二叉树的根节点,返回该树的 直径。两节点之间路径的 长度 由它们之间边数表示。

2024-07-08 23:42:13 285

原创 C++——对称二叉树leetcode101

递归判断,写一个sym函数,输入未left和right两个节点,分别为二叉树沿轴对称位置处的两个节点,那么为轴对称的条件为:left和right节点的val相同,并且其下面层也是对称的,并且如果left和right均为空,则对称,有一个为空,则不对称。给你一个二叉树的根节点 root , 检查它是否轴对称。

2024-07-08 13:18:37 151

原创 C++——LUR缓存leetcode148

使用双向链表来保存key和value,使用哈希表来保存key和对应的链表地址,从而可以O(1)差找和增加删除,初始化需要双向链表的头节点和尾节点,以及cache容量,并在类中实现moveToHead(将某个节点移动到链表头部,get或者put更新)、removeTali(删除最后的节点,put一个新的超容量)、addToHead(新建一个节点,并添加到头部,put一个新的未超容量)int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1。根据官方结题思路而来,

2024-07-07 18:45:17 219

原创 C++——排序链表leetcode148

每次排序的子链表的长度从1开始指导长度比链表的长度length更长,子链表merge时,每次merge两个子链表,如果长度在subLength之上就需要再向后进行新的一轮merge,merge函数就是正常的合并两个有序链表的函数,返回合并后的头节点,在合并之后判断后面是否还需要进行合并。给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。按照官方解题的思路,由下向上归并排序。

2024-07-07 16:53:26 132

原创 C++编译--Scons

(1)、Scons是一个开源由python脚本编程的下一代程序建造工具/编译工具,功能上类似GNU make,它采用不同于makefile文件的方式,而是使用SConstruct和SConscript文件系统来替代,这俩都是用python写的脚本。(2)、Scons中可能出现的文件:SConstruct, SConscript。(3)、SConstruct是scons的顶层配置文件(只有一个)。输入scons命令后,自动调用该脚本。

2024-06-16 01:22:22 710

原创 python版本管理工具

python版本管理

2024-06-16 01:21:07 164

原创 Git——git相关命令

Git介绍与常规使用

2024-06-05 21:11:14 515

原创 Linux——bash命令

在文件中存在Shebang的情况下,类Unix操作系统的程序加载器会分析Shebang后的内容,将这些内容作为解释器指令,并调用该指令,并将载有Shebang的文件路径作为该解释器的参数。source后的脚本不再是新开的子shell运行,source使得vars.sh中的每一行,都像是在父Shell中执行一样。会把多个命令组合起来,前一个命令的输出会变成后一个命令的输入,返回hcetutiy,一定要和||区分开。直接在Shell中赋值的变量,子进程不可见,而用export赋值的变量,子进程可见。

2024-06-04 23:38:02 1012

原创 Linux——linux常用命令

linux常用命令

2024-06-04 23:37:48 731

原创 深度学习——神经网络损失函数-持续更新

⑧REL系列:平均相对误差,REL的值表示平均相对误差的百分比,强调了深度估计的准确性。在pytorch中torch.nn.HuberLoss(reduction=‘mean’),pytorch中的smoothL1好像也具有类似的功能,是一样的。③smooth L1损失函数:平滑之后的L1损失函数:分段函数,来消除L1的折点不光滑问题。对每个像素返回0或1,然后对整幅图取平均,其中 是给定的阈值通常为(1.25, 1.25^2, 1.25^3)。②L2损失函数:均方误差:是目标值与估计值的差值的平方和。

2024-06-04 23:34:37 105

原创 C++——最小覆盖子串leetcode76

使用左右双指针和哈希表,使用哈希表存储t中的字符出现次数,然后双指针表示滑窗边界,从左边开始,计算滑窗内部的s的哈希表,对应到t的哈希表,如果有不够的字符,就把right指针向右,如果够了,就计算长度,同时将left指针向右,缩小边界。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “”。解释:最小覆盖子串 “BANC” 包含来自字符串 t 的 ‘A’、‘B’ 和 ‘C’。输入:s = “ADOBECODEBANC”, t = “ABC”输入:s = “a”, t = “a”

2024-06-04 23:32:15 262

原创 C++——K个一组翻转链表leetcode25

对于第一组子链表需要特殊处理,因为第一组子链表不需要把上一组的末尾赋给其开头,并且第一组的子链表翻转之后需要把新的链表头部保存下来。对于后面的子链表,每次翻转完之后,将上一组的末尾的next指向这一组的开头的节点,并更新末尾节点指针。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。输入:head = [1,2,3,4,5], k = 2。输入:head = [1,2,3,4,5], k = 3。输出:[2,1,4,3,5]输出:[3,2,1,4,5]

2024-06-04 23:31:23 211

原创 C++——随机链表的复制leetcode138

新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。【思路来源于leetcode评论区】首先复制一份只有next,而random都为nullptr的链表,然后构造哈希表<Node*, Node*>分别存放原链表节点和新链表节点,最后遍历原链表节点,把根据原链表random对应的原链表节点找到新链表节点的random应该对应的新链表节点。输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

2024-06-04 23:31:08 239

原创 C++——合并两个有序链表leetcode21

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。维护一个pre_Nod为dummy_head,表示新的链表的前一个节点,用于赋值next。循环遍历,直到两个链表有一个被遍历空,查看是哪个被遍历空,让pre_Node指向另一个。然后根据两个头节点值的大小可以得到最后的新的头节点newhead。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]

2024-06-04 23:30:56 310

原创 C++——缺失的第一个正数leetcode41

目标值一定在[1,N+1]范围内,如果数组全部元素正好是1-N,那么需要的就是N+1。那么我们可以只关注数组中在[1,N+1]范围内的数,对于这里面的每个数,将其元素值在数组中对应的index做上标记,例如转为负数,那么首先需要处理数组中原始的负数,将原始的负数都设置为n+1不会影响结果。然后对于剩下的数,需要进行判断,如果在[1,N]之间,就把对应索引的数设置负,需要注意的是,如果有重复的数,不要重复变负,需要判断。解释:范围 [1,2] 中的数字都在数组中。输入:nums = [3,4,-1,1]

2024-06-04 23:30:44 177

原创 C++——滑动窗口最大值leetcode239

考虑使用优先队列(优先队列默认是会把最大值存放在堆顶,每次只能访问取出优先级最大,也就是值最大的那个元素,这样就默认排序了),先将第一个滑窗的都保存到优先队列中,然后每次向后移动时,添加一个元素,并且判断最大值的位置(优先队列保存值和索引),如果位置超出左侧滑窗边界,那么就pop()最大值,一直到最大值的索引在滑窗内部,其他不影响结果的值就不用管。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。输入:nums = [1], k = 1。输出:[3,3,5,5,6,7]

2024-06-04 23:30:35 231

原创 C++——和为k的子数组leetcode560

为了减少时间复杂度。我们发现当遍历到nums[i]的时候,如果我们能够知道此时的前i项和sum_i,并且能够以O(1)查询前i-1个数字的前s项和【s=0~(i-1)】,那么当前所需的那个前s项和就等于sum_i-k。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。因此考虑用一个哈希表在遍历过程中添加前i项和数值以及出现的次数,并在遍历过程中判断。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。

2024-06-04 23:30:24 196

原创 C++——无重复字符的最长字串leetcode3

对于当前位置,使用一个right指针来判断后面的字符是否重复,使用一个哈希集合存储已经无重复的字符,如果无重复就一直向后添加,如果有重复的结束循环,说明right位置字符和前面的某个字串重复了,在哈希集合中删除第i个字符,换i++位置重复判断,不需要从头开始,还是从right位置开始。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “bbbbb”

2024-06-04 23:30:07 318

原创 C++——接雨水leetcode42

判断:如果最低平面和左指针位置处的高度一致,那么就从左边往右开始找更高的(在找的过程中记录积累了多少水,因为找的过程中水平面一直是min_height,因此,积累的水就是水平面减去每个的高度),直到左边的高度高于原来min_height,再次判断左右哪边是最低的(回到循环开头)。解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]

2024-06-04 23:29:55 193

原创 C++——三数之和Leetcode15

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。此时再left++,right–,因此原本的nums[i]+nums[left]+nums[right]=0,所有left和right需要同时变化,同时外层循环退出条件需要注意left<right。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]

2024-06-04 23:29:32 224

原创 C++——最长连续序列Leetcode128

使用一个哈希集合保存nums的所有元素,for循环遍历nums判断哪个元素是一个递增序列的最后一个元素(即不存在该元素值-1的元素,如果是最后一个元素,进入训练依次判断是否有其值-1的元素,并维护递增长度len,在外层维护一个总长度max_len)解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]

2024-06-04 23:29:17 241

原创 C++——字母异位词组合

考虑使用一个哈希表,键为每个字符串经过sort之后的字符串(保证唯一性),值为原来的字符串都存储在vector里面。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]给你一个字符串数组,请你将 字母异位词 组合在一起。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。输入: strs = [“a”]输出: [[“a”]]输出: [[“”]]

2024-06-04 23:29:03 272

原创 C++——常用的排序方法

n个元素的vector,需要排n-1次,每次比较前面的若干个,每次比较当前和下一个并判断是否需要交换,返回0 2 2 3 5 5 5 6 6 7 8 12 32 34 89。返回0 2 2 3 5 5 5 6 6 7 8 12 32 34 89。在vector中设置左指针和右指针,每次。

2024-06-04 23:28:47 660

原创 深度学习——神经网络的常用激活函数

激活函数将非线性引入到网络中,没有激活函数相当于原始的感知机,只有线性操作,近似为矩阵相乘操作,加入激活函数后可以更好地拟合非线性函数。

2024-05-06 15:54:04 573

原创 毫米波雷达——毫米波FMCW MIMO雷达测距、测速、测角

是快时间采样频率,当目标距离超过最大不模糊距离时,回波信号的中频信号频率会超过采样频率,根据采样定理,信号处理时会发生频谱混叠,ADC采样频率确定了我们希望看到的最大不模糊距离。对于相干雷达,通常采用测量相位差的方法来进行测速,当目标以恒定的速率沿某一方向运动时,由于其距离的变化,会引起接收信号相位的变化,发射天线连续发射多个chirp信号,测量接收信号的相位差为。FMCW雷达发射chirp信号,接收天线接收回波信号,通过将回波信号与某一距离下的参考信号进行混频,即可得到中频信号,

2024-04-29 13:35:49 1433

原创 深度学习——模型显存占用分析

GPU利用率类似cpu利用率,表示gpu核在进行计算操作,而显存类似于仓库,用于存放计算过程中的数据,每一个Float32数会占用4字节的显存,也就是4B的显存。

2024-04-28 22:47:07 244

原创 深度学习——神经网络模型运算量和参数量分析

Total params: 8,878,994——Total params是指模型中总参数个数,包括权重偏置等,而不考虑参数的具体数据类型和内存占用情况,只是简单地计算模型中所有参数的数量。Params size (MB): 33.87 模型大小:这个是模型保存的大小,目前模型多用floa32,一个数占用4字节,这个参数是指保存到电脑中的模型.pth文件的大小。total_params:8.920M——参数的个数,而不是占用的大小,如果模型都是float32参数,每个参数占用4字节。

2024-04-28 22:34:00 360

原创 毫米波雷达——毫米波阵列的MUSIC算法

MUSIC(Multiple Signal Classification)算法,即多信号分类算法,是一种基于子空间分解/矩阵特征空间分解的算法。MUSIC算法对DOA(波达方向)的估计有很高的分辨率。但是该算法的前提是入射信号(认为是不同角度目标的反射信号)必须是互不相干的。Plus:相干怎么处理???待补充信号处理的观测空间可以分解为信号子空间和噪声子空间,信号子空间和噪声子空间具有正交性。

2024-04-28 21:16:34 792

原创 毫米波雷达——AWR1843数据采集流程

接下来进入SensorConfig环节,点击左侧load config按钮,导入参数文件(这里选择1843sar2.xml),**这里也可以选择自己配置雷达参数,就不需要导入预先定义的参数了,也可以把自己配置的雷达参数导出为.xml文件方便下次使用。,切换到StaticConfig选项卡,首先勾选上所有的Tx Channel和Rx Channel,然后按照下图所示依次点击ADC Config Set,LP Mode Set,RF init三个按钮进行设置。以雷达平动测量为例,控制云台移动到一边。

2024-04-25 23:11:19 1753 3

空空如也

空空如也

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

TA关注的人

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