leetcode & kamacoder
记录刷题,方便自己二刷复盘
why_1513
求实求真,大气大气
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LRU缓存-力扣
【代码】LRU缓存-力扣。原创 2024-08-20 15:21:58 · 342 阅读 · 0 评论 -
腐烂的橘子-力扣
使用BFS来解决,保存一个腐烂的橘子队列并记录新鲜橘子的数目,对每个腐烂橘子从四个方向进行查找,如果是新鲜的橘子,就将其变为腐烂,加入队列。当新鲜橘子数组为0时,直接返回。原创 2024-08-20 10:48:23 · 294 阅读 · 0 评论 -
岛屿数量-力扣
【代码】岛屿数量-力扣。原创 2024-08-19 11:24:22 · 254 阅读 · 0 评论 -
二叉树展开为链表
题目需要将二叉树按照先序遍历的顺序展开为链表,那么就按照相反的顺序 右左中 对二叉树进行原地操作。原创 2024-08-19 11:10:23 · 197 阅读 · 0 评论 -
乘积最大子数组
局部变量使用double是因为测试用例[0,10,10,10,10,10,10,10,10,10,-10,10,10,10,10,10,10,10,10,10,0]原创 2024-08-17 15:02:45 · 132 阅读 · 0 评论 -
下一个排列-力扣
【代码】下一个排列-力扣。原创 2024-08-17 14:25:13 · 149 阅读 · 0 评论 -
颜色分类-力扣
/ 2. 保持(right, nums.size() - 1]为2。// 如果做到以上两点, [left, right]必为1。// 1. 保持[0, left)为0。原创 2024-08-17 13:48:59 · 138 阅读 · 0 评论 -
括号生成-力扣
【代码】括号生成-力扣。原创 2024-08-17 13:21:22 · 425 阅读 · 0 评论 -
合并K个升序链表-力扣
【代码】合并K个升序链表-力扣。原创 2024-08-15 15:57:03 · 275 阅读 · 0 评论 -
排序链表-力扣
对链表进行归并排序,两个链表的合并可以借用 合并两个有序链表。原创 2024-08-15 15:29:58 · 133 阅读 · 0 评论 -
寻找重复数
参考环形链表Ⅱ,将数组建立类似的映射关系。原创 2024-08-13 11:40:53 · 162 阅读 · 0 评论 -
杨辉三角(对vector resize)
【代码】杨辉三角(对vector resize)原创 2024-08-13 11:14:39 · 152 阅读 · 0 评论 -
搜索二维矩阵
这道题乍一看,和做过的搜索二维矩阵Ⅱ类似,用之前的代码也能通过,但忽略掉了每行的第一个整数大于前一行的最后一个整数这个条件。可以使用两次二分法来解决这道题目。原创 2024-08-12 23:27:56 · 341 阅读 · 0 评论 -
最小路径和
【代码】最小路径和。原创 2024-08-12 21:12:43 · 159 阅读 · 0 评论 -
单词搜索-力扣
【代码】单词 搜索。原创 2024-07-24 16:25:08 · 142 阅读 · 0 评论 -
二叉树的直径
【代码】二叉树的直径。原创 2024-07-24 15:53:57 · 263 阅读 · 0 评论 -
合并两个有序链表
【代码】排序 链表。原创 2024-07-24 11:08:18 · 324 阅读 · 0 评论 -
随机链表的复制
使用哈希表来保存每个节点对应的新节点的地址,先进行一遍遍历创建random都为0的链表,然后根据哈希表对复制链表节点的random进行赋值。原创 2024-07-23 19:16:22 · 145 阅读 · 0 评论 -
K个一组翻转链表
【代码】K个一组翻转链表。原创 2024-07-23 17:16:36 · 463 阅读 · 0 评论 -
环形链表-力扣
采用快慢指针,如果链表存在环,则快慢指针一定会相遇。原创 2024-07-18 15:17:19 · 524 阅读 · 0 评论 -
回文链表-链表
暴力解法复制一个新的链表出来并将其反转,然后挨个元素进行比较。比较是否是回文链表,实际上是在比较链表节点 val 的值是否相等,那么只需遍历一次链表,将其val存放在数组中,然后去判断这个数组是否回文。上述的写法都需要额外的空间来存放val,其实判断是否回文,只需要判断链表的前半部分和后半部分是否相等,那么只需要将链表的后半部分反转,然后依次进行比较,这样就不必花费额外的空间。可以使用快慢指针的方法找到链表后半部分的头节点。原创 2024-07-18 14:57:25 · 227 阅读 · 0 评论 -
搜索二维矩阵Ⅱ
【代码】搜索二维矩阵Ⅱ。原创 2024-07-17 16:35:26 · 129 阅读 · 0 评论 -
两数相加-力扣
【代码】两数 相加。原创 2024-07-17 16:07:22 · 150 阅读 · 0 评论 -
旋转图像-力扣
首选对矩阵进行转置,然后首尾列交换顺序,直到中间列。原创 2024-07-17 15:33:52 · 205 阅读 · 0 评论 -
数组中的第K个最大元素 最小堆
【代码】数组中的第K个最大元素。原创 2024-07-16 20:53:31 · 170 阅读 · 0 评论 -
矩阵置零-力扣
【代码】矩 阵 置 零。原创 2024-07-16 19:50:04 · 253 阅读 · 0 评论 -
缺失的第一个正数
将数组中所有小于等于0的数都置为 N + 1, 遍历数组,将此时将 nums[i] - 1 的下标对应的值变为负数,那么从前往后遍历到的第一个正数的下标,便是缺失的第一个正数。如果数组的数都是负数,说明数组中出现的正数恰好是 1 - N, 那么N + 1 便是我们需要找的数。原创 2024-07-16 19:35:32 · 512 阅读 · 0 评论 -
除自身以外数组的乘积
【代码】除自身以外数组的乘积。原创 2024-07-15 17:05:58 · 439 阅读 · 0 评论 -
最小覆盖子串
【代码】最小覆盖子串。原创 2024-07-12 16:48:27 · 322 阅读 · 0 评论 -
轮转数组-力扣
【代码】轮转 数组。原创 2024-07-11 17:41:33 · 169 阅读 · 0 评论 -
无重复字符的最长子串
【代码】无重复字符的最长子串。原创 2024-07-11 17:26:41 · 331 阅读 · 0 评论 -
盛最多水的容器
【代码】盛最多水的容器。原创 2024-07-11 16:37:19 · 498 阅读 · 0 评论 -
最长连续子序列
采用set对数组nums元素去重,然后遍历set元素,判断元素是否是连续序列的起始元素。如果是,则计算该元素起始序列的长度。因此set中每个元素只会被遍历一次。原创 2024-07-10 10:52:59 · 134 阅读 · 0 评论 -
小明逛公园-(Floyd 算法)
从递推公式:grid[i][j][k] = min(grid[i][k][k - 1] + grid[k][j][k - 1], grid[i][j][k - 1]) 可以看出,我们需要三个for循环,分别遍历i,j 和k。那么我们只需要记录 grid[i][j][1] 和 grid[i][j][0] 就好,之后就是 grid[i][j][1] 和 grid[i][j][0] 交替滚动。– 节点i 到 节点j 的最短路径不经过节点k,grid[i][j][k] = grid[i][j][k - 1]原创 2024-07-09 20:42:55 · 1017 阅读 · 0 评论 -
城市间货物运输Ⅲ-卡玛(Bellman_ford之单源有限最短路)
题目要求最多经过 k 个城市的条件下,而不是一定经过k个城市,也可以经过的城市数量比k小,但要最短的路径。对所有边松弛一次,相当于计算 起点到达 与起点一条边相连的节点 的最短距离。那么经过 k 个城市,则共计 k + 1条边,那么最多需要松弛 k + 1次。使用队列优化后的 Bellman_ford 算法,关键在于 如何控制松弛 k 次,可以用一个变量 que_size 记录每一轮松弛入队列的所有节点数量。下一轮松弛的时候,就把队列里 que_size 个节点都弹出来,就是上一轮松弛入队列的节点。原创 2024-07-09 15:57:38 · 438 阅读 · 0 评论 -
城市间货物运输Ⅱ-卡玛(Bellman_ford之判断负权回路)
如果是队列优化过的 Bellman_ford 算法,在极端情况下,即:所有节点都与其他节点相连,每个节点的入度为 n-1 (n为节点数量),所以每个节点最多加入 n-1 次队列。利用一个数组来记录每个节点的出现次数,如果某个节点出现次数超过了 n - 1次,就说明该图存在负权回路。Bellman_ford算法最多对每条边进行 n - 1 次松弛,n 为图中节点个数,就可以得到从源点到 n 的最短路径,那么对每条边进行第 n - 1次松弛,如果 minDist 数组还会更新的话,那么就说明图中存在负权回路。原创 2024-07-09 14:28:51 · 273 阅读 · 0 评论 -
城市间货物运输Ⅰ-卡玛(Bellman_ford 队列优化算法(SPFA))
Bellman_ford 算法每次松弛 都是对所有边进行松弛,但真正有效的松弛,是基于已经计算过的节点在做的松弛,所以 Bellman_ford 算法 每次都是对所有边进行松弛,其实是多做了一些无用功。一般来说,SPFA 的时间复杂度为 O(K * N) K 为不定值,因为 节点需要计入几次队列取决于 图的稠密度。如果图是一条线形图且单向的话,每个节点的入度为1,那么只需要加入一次队列,这样时间复杂度就是 O(N)。实际上 只需要对 上一次松弛的时候更新过的节点作为出发节点所连接的边 进行松弛就够了。原创 2024-07-09 11:54:39 · 401 阅读 · 0 评论 -
城市间货物运输Ⅰ-卡玛(Bellman_ford)
本题是经典的带负权值的单源最短路问题,Dijkstra 求单源最短路问题的前提是图中的边无负权重。当图中的边存在负权重时,就需要使用 Bellman_ford 算法来进行求解了。Bellman_ford算法的核心思想是 对所有边进行松弛n-1次操作(n为节点数量),从而求得目标最短路。本篇学习了代码随想录。原创 2024-07-09 11:01:40 · 446 阅读 · 0 评论 -
参加科学大会-卡玛(堆优化版Dijkstra)
与 Prim 类似,当节点数目较多,边的数量很小的时候(稀疏图),可以考虑从边的角度来求最短路,邻接矩阵遇到稀疏图,会导致申请过大的二维数组造成空间浪费 且遍历 边 的时候需要遍历整个n * n矩阵,造成时间浪费。而在朴素版Dijkstra中,需要一个for循环来遍历节点,并找出未访问节点,然后对每个为访问节点更新minDist数组,即源点到为访问节点的最小权重。如果采取小顶堆来存放边,并按照边权重的大小进行排序,那么我们每次从堆中取出的边便是权重最小的边,那么就无须花费两层for循环来寻找最近的节点了。原创 2024-07-08 22:03:53 · 750 阅读 · 0 评论 -
参加科学大会-卡玛(朴素版Dijkstra)
dijkstra算法:在有权图(权值非负数)中求从起点到其他节点的最短路径算法。dijkstra 算法可以同时求起点到所有节点的最短路径;本文学习了就代码随想录。原创 2024-07-08 20:56:35 · 324 阅读 · 0 评论
分享