Photinia
LeetCode面试经典150道
为了offer而战
Failed to connect to github.com port 443 after 21150 ms, Could not connect to server
解决 git push 失败的问题
代码随想录算法训练第四天|24两两交换链表中的节点|19删除链表的倒数第N个节点|面试题02.07链表相交|142环形链表II
1、24两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 代码随想录 思路:拿到这道题看到时看到两两交换节点,就想到能不能用双指针,但是对于什么时候用双指针还是有点迷糊的。然后思考能不能用虚拟头节点,思考了以下我只是两两交换节点似乎不和虚拟头节点沾边,我没法用上。写着写着发现我把这两个节点交换时,好像涉及到要把之前的节点连上,把之后的节点连上,之后的节点可以使用cur指针找到,但是之前的节点没法啊。。。于是恍然大悟。. 虚拟头节点、双指针总结: 在处理需要断键重连的链表问题时,如果一下子想不出来,优先思考可不可以用双指针,双指针第一个指针存储last节点,另一个则是cur节点,可以省去很多临时节点。如果第一个元素也需要处理,那就需要前面加上虚拟头节点,方便第一个元素也可以有last。 1234567891011121314151617181920ListNode* swapPairs(ListNode* head) { if(head == nullptr | ...
代码随想录算法训练第三天|链表理论|203移出链表元素|707设计链表|206翻转链表
单链表: 指针域只能指向节点的下一个节点。 双链表: 每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。双链表 既可以向前查询也可以向后查询。 循环链表: 就是链表首尾相连。循环链表可以用来解决约瑟夫环问题。 数组的元素是不能删的,只能覆盖。双链表 既可以向前查询也可以向后查询。 1、203移出链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 思路 :这道题一开始我以为简单,就是简单的链表遍历。但是我忽略了一个小细节,导致卡了一会,就是只有当下一个节点值不是要求移出的值时才步进指针,因为是要求值的时候我们断键重连后其实节点已经更新了,下一个节点应该再次被检查,不能步进指针。 **知识点:**虚拟头结点 12345678910111213ListNode* removeElements(ListNode* head, int val) { auto dumy = ListNode(0,head); auto *cur = & ...
代码随想录算法训练第二天|209长度最小的子数组|59螺旋矩阵II|977有序数组的平方|区间和、前缀和|开发商购买土地
0. 知识点 滑动窗口 前缀和数组 滑动窗口算法(快慢指针) 滑动窗口算法技巧主要用来解决子数组、子串问题,比如让你寻找符合某个条件的最长/最短子数组。 它是一个左闭右开的区间 时间复杂度O(N) 思路:先移动右指针找到可行解,然后移动左指针找到最优解。然后再移动有指针。。。 123456789101112131415161718192021222324252627282930313233343536// 滑动窗口算法伪码框架void slidingWindow(string s) { // 用合适的数据结构记录窗口中的数据,根据具体场景变通 // 比如说,我想记录窗口中元素出现的次数,就用 map // 如果我想记录窗口中的元素和,就可以只用一个 int auto window = ... int left = 0, right = 0; while (right < s.size()) { // c 是将移入窗口的字符 char c = s[right]; window. ...
代码随想录算法训练第一天|数组理论|704二分查找|24移除元素|977有序数组的平方
0、tips 数组下标都是从0开始的。 数组内存空间的地址是连续的 数组的元素是不能删的,只能覆盖。 总结: 学习时长:三小时。今天的题都是比较基础的,直接运用算法框架就能写,977有序数组题没看仔细平方卡了一下。前面花时间右总结了一下二分法的框架和细节。 1、704二分查找 labuladong文章链接 代码随想录文章链接 视频链接 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 拿到这道排序题,首先看到是对有序数组查找一个数,可以使用二分查找,复杂度OlogN。对于二分查找有三种类型:查找一个数、查找左侧边界、查找右侧边界,每一种都可以用左闭右闭和左闭右开的方法去索引。 这里我掌握左闭右闭的二分框架。 思路: 首先明确我使用左闭右闭的框架,即左右双指针都是即将搜索的区间边界。得到初始条件int left = 0, right = nums.size()-1 然后明确循环条件,搜索有效的条件应该是左右边界重合。得到left <= righ ...
minco参数曲线化
0. 微分平坦 定义 对于非线性系统的一般形式如下: $$\dot x = f(x,u,t)$$ 如果系统这个系统通过化简或者变换后能够找到一组变量$y$,使得系统的状态量$x$和控制量$u$可以由$y$及$y$的多阶导数表示,则系统是微分平坦的。即: $$ \begin{matrix} x = t_1(y,y^{‘},…,y^{n})\\ u = t_2(y,y^{’},…,y^{n}) \end{matrix} $$ 例子 例如一个常见的二自由度自行车模型,它的运动学模型和微分平坦模型的一般形式如下: $$ \begin{cases} \dot x = vcos\theta \\ \dot y = vsin\theta \\ \dot \theta = \frac{vtan(\delta)}{L}\\ \dot v = a_t \\ k = \frac{tan(\delta)}{L} \\ a_n = v^2\cdot k \end{cases} $$ 其中$(x,y,\theta)$是状态量,代表车体的位置和航向角 $(a_t,\delta)$是控制量,代表车的纵向加速度和前轮 ...
曲率的定义
1、曲率的定义 曲率(Curvature)是描述曲线弯曲程度的量度。在二维空间中,对于一条曲线,曲率在某一点上可以通过以下公式计算: $$ \kappa = \frac{d\theta}{ds} $$ 其中: dθ是曲线的切线方向(即车辆朝向)相对于路径切线的变化量。 ds是路径上的微小弧长增量。 2、曲率的大小和方向 大小: 曲率的大小表示曲线弯曲的程度,曲线弯曲的越大,其曲率越大。 方向: 曲率的正负决定了路径的弯曲方向。遵循右手定则,正曲率表示曲线逆时针弯曲,负曲率表示顺时针弯曲。 3、曲率的应用 3.1 曲率的计算 在自动驾驶中,车辆的转弯半径受到前轮转角的限制,从而影响轨迹的曲率。现在有一条正曲率的轨迹,我们分情况讨论一下曲率: case 1. 一号车的方向是顺着轨迹的,想要跟踪这条轨迹只需要保持速度为正$v>0$并向左打方向盘,$\delta>0, tan(\delta)>0$。轨迹曲率如下: $$ \kappa = \frac{1}{R} = \frac{tan\delta}{L} $$ case 2. 二号车的方向是相反轨迹的,想要跟踪这条轨 ...
avatar
🐟认真摸鱼中
Photinia
Tomorrow will be better.
公告栏
--- 暂无 ---
本站统计
文章数目 :
32
本站总字数 :
3.9w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面