自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 无源定位之TDOA定位

由此可见,双曲线时差定位系统至少要由3个观测站组成,3个观测站可确定两条双曲线,这两条双曲线最多有两个焦点,如果有一个焦点,则不存在定位模糊,如果有两个焦点,那么这两个焦点必然位于基线两侧(两观测站所在直线),这时可能会产生定位模糊。时差定位系统由一个中心站和两个以上的辅站组成,定位原理如下图(a)所示。是大于0还是小于0,确定一条),以B,C站为焦点,同理,可以得如下两条双曲线,交点即为所求的辐射源。其中r1为主站到辐射源的距离,ri为第i个辅站到辐射源的距离,均为未知量,主站和辅站的坐标。

2024-04-08 18:29:55 426

原创 雷达学习之多普勒频率

雷达的原理是发射一些无线电脉冲来探测目标,并通过回波的延时来计算目标与雷达的距离,但当目标为运动物体时,在回波向目标传输的同时,目标也会远离或接近回波,所以会导致回波信号的前沿接触到目标后,后沿会更快或更慢的接触到目标,从而导致回波信号的频率变化,这一部分变化值就是多普勒频率。此图中雷达与卫星最短的距离为R0,雷达与x轴之间的距离设为X0,这两个数值都是已知的,所以每一时刻,雷达与目标之间的距离为。,速度为v,在t0时刻,雷达的脉冲前沿刚好到达目标,由于雷达的脉冲宽度为。,此时脉冲前沿和后沿之间的距离为。

2024-04-08 12:11:50 522

原创 代码随想录第二十七天 455.分发饼干 376.摆动序列 53.最大子序和 122.买卖股票的最佳时机II

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

2024-03-04 17:18:21 770

原创 代码随想录第26天 46.全排列 47.全排列II

给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以返回答案。

2024-03-02 14:37:12 366

原创 代码随想录第二十五天 78.子集 90.子集II 491.非递减子序列

给你一个整数数组nums,数组中的元素。返回该数组所有可能的子集(幂集)。解集包含重复的子集。你可以按返回解集。

2024-03-01 12:12:12 594

原创 代码随想录第二十四天 39.组合总和 40.组合总和II 131.分割回文串

在处理组合问题的时候,递归参数需要传入startIndex,表示下一轮递归遍历的起始位置,这个startIndex就是切割线。

2024-02-23 16:13:23 648

原创 代码随想录第二十三天 回溯算法 77.组合 216.组合总和 17.电话号码的字母组合

在这里要定义两个全局变量,一个用来存放符合条件单一结果,一个用来存放符合条件结果的集合。从下图中红线部分可以看出,在集合[1,2,3,4]取1之后,下一层递归,就要在[2,3,4]中取数了,通过在每一次递归中调整startindex的值,在2,3,4中取数。path这个数组的大小如果达到k,说明我们找到了一个子集大小为k的组合了,此时用result二维数组,把path保存起来,并终止本层递归。如图红色部分:for循环用来横向遍历,递归的过程是纵向遍历。for循环通过横向遍历,分别取1,2,3,4。

2024-02-21 19:35:07 771

原创 代码随想录第二十一天 701.二叉搜索树中的插入操作 108.将有序数组转换为二叉搜索树

给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据,新值和原始二叉搜索树中的任意节点值都不同。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回。

2024-02-20 21:27:10 793 1

原创 LeetCode 450.删除二叉搜索树中的节点和669.修建二叉搜索树思路对比 及heap-use-after-free问题解决

给定一个二叉搜索树的根节点和一个值,删除二叉搜索树中的对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。另一个正确答案是 [5,2,6,null,4,null,7]。

2024-02-20 17:17:01 1604 1

原创 代码随想录第二十天 503 二叉搜索树的最小绝对差 501 二叉搜索树中的众数 236 二叉树的最近公共祖先 235 二叉搜索树的最近公共祖先

给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11。

2024-02-18 23:23:47 710 1

原创 代码随想录第十九天 617 合并二叉树 700 二叉搜索树中的搜索 98 验证二叉搜索树

给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。合并过程必须从两个树的根节点开始。[2,2]

2024-02-07 14:04:00 638 1

原创 代码随想录第十八天 513 找树左下角的值 112 路径之和 106 从中序与后序遍历序列构造二叉树 654 最大二叉树

给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。17。

2024-01-20 12:57:44 1847

原创 代码随想录第十七天 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和

先将6加入path中,判断左右节点都不为空,递归,调用函数,此时cur = 2,left = 0,right = 4,将2加入path,再次递归。将path中的0弹出。采用后序遍历,相较求最大深度的题目,改变的地方在于,不仅要求当前节点的高度,还需要判断左右子树的高度差是否超过1,如果超过,那么还需要返回false。cur = 9时,leftvalue = 0,cur = 20,leftvalue = 15,此时cur = 3的话,leftvalue就需要加上9,所以需要添加一段判断的代码。

2024-01-15 17:44:14 795

原创 代码随想录第十六天 104 二叉树的最大深度 559 n叉树的最大深度 111 二叉树的最小深度

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

2024-01-12 20:19:44 896 1

原创 代码随想录第十五天 102 二叉树的层序遍历 226.翻转二叉树 101.对称二叉树

接着判断右节点,也就是6 6,这两个节点是对称的,就代表3 3这两个节点以下的分支都是对称的,接下来比较4 4,它们也是对称的,所以2 2以下的分支都是对称的。就需要注意,先交换了左节点的两个分支1 3后,左分支变为2 1 3,再交换中间节点的两个分支后,这时候从上到下分别为4 7 2 6 9 3 1,如果这时候再执行右节点两个分支的交换,这时候的右分支其实是最开始的左分支,相当于将最开始的左分支2 3 1交换了两次,所以这时候从上到下变为4 7 2 6 9 1 3。那么遍历的顺序应该是什么样的呢?

2024-01-11 17:49:55 749 1

原创 代码随想录第十四天 144 二叉树的前序遍历

刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。int val;大家会发现二叉树的定义 和链表是差不多的,相对于链表 ,二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。

2024-01-10 10:53:45 785 1

原创 代码随想录 239 滑动窗口的最大值 347 前K个高频元素

所以大家经常说的大顶堆(堆头是最大元素),小顶堆(堆头是最小元素),如果懒得自己实现的话,就直接用priority_queue(优先级队列)就可以了,底层实现都是一样的,从小到大排就是小顶堆,从大到小排就是大顶堆。每push进来一个元素的时候,都判断当前push进来的元素是否比先前队列里的元素大,如果大的话,就把前面的元素pop掉,因为每次只需要找最大的元素,要保证最大的元素一直在队列的最前面。保持如上规则,每次窗口移动的时候,只要问que.front()就可以返回当前窗口的最大值。

2024-01-09 16:45:07 804 1

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

我们可以用栈的思路解决这个问题,过程是,遍历字符串中所有的元素,如果出现左括号,那么就创建一个栈,向栈中添加相对应的右括号(由于符号只由这三种括号组成,我们可以直接一一列举),当遍历到右括号时,就和栈顶的元素相对比(如果不多余,一定会和栈顶的元素相同),如果相同,就将这个栈顶的元素pop掉,如果最后栈里面没有元素了,全部都匹配掉了,那就代表这个字符串的符号都是匹配的(这里还需要注意只有右括号的情况,所以字符串中出现右括号时,先判断一下,栈里面有没有元素)第三种情况,字符串里右方向的括号多余了,所以不匹配。

2024-01-08 20:39:47 705 1

原创 代码随想录第十天 232.用栈实现队列 225. 用队列实现栈

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

2024-01-08 16:04:01 1324 1

原创 代码随想录第九天 KMP算法

KMP主要应用在字符串匹配上。KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。文章中字符串的前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串。后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串。最长公共前后缀就是相等的前后缀的最长长度前缀表的第i个元素,指的就是前i个字符最长公共前后缀的长度。前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。为了清楚地了解前缀表的来历,我们来举一

2024-01-05 14:35:31 416 1

原创 代码随想录第八天 344.反转字符串 541. 反转字符串II 54.替换数字 151.反转字符串里的单词 55.右旋转字符串

但是因为两个单词之间需要一个空格,所以要再增加一个判断,就是当慢指针指向的不是第一个单词的开头,而是指向第一个单词的后面时,加一个空格。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。思路: 先去除多余的空格,然后将整个字符串都进行反转,再将每个单词重新反转回来,反转每个单词的时候,是通过有无空格来判断是不是到下一个单词了。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。输入字符串以字符数组。

2024-01-04 17:16:34 775 1

原创 代码随想录第七天 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

并且在nums[i]+nums[left]+nums[right] = 0的情况下,两边的指针都要移动,因为这时候只移动一边的指针,已经不会出现满足nums[i]+nums[left]+nums[right] = 0的情况,如果出现了也需要跳过,因为重复了,所以两边的指针都向里移一位。这道题不同的地方在于,它要求的是满足这个条件的元组的个数,而不需要求出下标,所以用map的key是它们的和,value是和出现的次数,如果需要求四个数字的下标就更加麻烦。注意,输出的顺序和三元组的顺序并不重要。

2024-01-03 21:14:26 774 1

原创 代码随想录第六天 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

思路:首先计算平方和,然后判断,如果和为1,就可以直接结束循环;思路:没有看讲解之前的想法是遍历字符串s的字母,再遍历t,看t中有没有相同的,有相同的,删掉(为了防止相同的字母数量对不上),一直到最后一个字母,如果都能找到相同的,那就是异位词。思路:这道题的思路首先是要想到用哈希表,两数之和也可以想成是先固定一个数,然后在剩下的数中,找可以和这个数配对的另外一个数,不能配对就放到map里面等待配对。这里需要注意的是,如果配对成功,也要把成功配对的数放进map里面,否则后面可能有相同的数,无法成功配对了。

2024-01-01 22:47:26 895

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 02.07. 链表相交 142.环形链表II

定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。较为简洁的思路是,定义快指针和慢指针,通过控制快指针和慢指针之间的间隔,删除相应的节点,最后直接返回dummyHead的下一个节点。思路:本题的思路是遍历两个链表,得到它们的长度后,求出长度的差值gap,然后将较长的链表,先移动gap,再进行比较。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。

2023-12-30 23:19:35 788

原创 代码随想录算法训练营第三天| 203.移除链表元素、707.设计链表、206.反转链表

1. 这一题目目前对我来说比较混淆的地方一个是没弄懂指针为什么可以指向也可以写成 指针->next这一形式(不是应该是节点才包含指针,数值这两样东西吗,如果指针也可以写成这样的形式,那么是怎么样一个搜寻的过程呢,知道了指针,于是知道了下一节点的地址,根据地址直接访问了其中的数值?思路:创建一个虚拟节点,,让虚拟节点指向第一个节点,然后如果某一节点的数值和要删除的数据相等,就将这一节点的next地址,赋给上一个节点的next,就可以跨过目前的这一节点。结构体内部的一个成员变量(指向下一个节点的指针)。

2023-12-30 17:17:27 789

原创 代码随想录算法训练营第二天| 977. 有序数组的平方、209.长度最小的子数组、59.螺旋矩阵

思路:由于已给的数组nums是一个非递减顺序,所以进行平方后,最大值一定是最左边或者最右边的,根据这个思路,在最左边和最右边各设定一个指针,比较指针所指元素的大小,然后,左边指针的元素小就向右移,右边指针的元素小就向左移,左边指针和右边指针指的数不相等时,正常赋值,移动指针,如果出现两边指针指的数相等时,有可能是数组中只有一个数,也有可能是互为相反数,这两种情况需要区分考虑。思路:先固定起点,挨个试,以第一个元素为起点,需要几个元素可以超过要求的和,以第二个为起点,需要几个......

2023-12-28 12:28:55 511

空空如也

空空如也

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

TA关注的人

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