- 博客(184)
- 收藏
- 关注
原创 leetcode71.简化路径
参考了leetcode的官方题解,用/分割字符串就能解决多个/的问题,利用栈后进先出,碰到..就回退出栈,空字符串和.不用处理,其余正常的目录就入栈,最后双端链表从头拼接就是结果。
2025-07-06 16:33:19
189
原创 leetcode86.分隔链表
具体实现是先利用左指针找到原链表第一个不小于x的节点的前一个节点;然后右指针以此为起点,找到下一个节点值小于x的,然后把下一个节点抽到左值针的下一个节点;大体的思路是不断向后遍历找到节点值小于x的,然后把他置换到整个链表的前方。
2025-07-05 17:04:44
214
原创 leetcode427.建立四叉树
解题基本思路是先判断当前矩阵是不是全0或全1,如果是就直接返回新建的一个节点值(矩阵的统一值,叶子节点),如果不是那就新建一个节点值,非叶并且左上右上左下右下四个方向上递归创建节点。区间x0到x1和区间y0到y1都是左闭右开的。
2025-06-30 20:28:06
180
原创 leetcode130.被围绕的区域
我们可以从4个边上的所有点为起点执行dfs,将深度搜索得到的O变为1;最后遍历整个矩阵只要是1的变回O,不是1的就全部变为X。这题可以这样解,如果不被包围那么一定和4个边上的O相关联,也就是只要接壤了边上的O的就不会被包围,没有接壤的就是被包围。
2025-06-26 12:52:42
179
原创 leetcode103.二叉树的锯齿形层序遍历
经典的层序遍历,我们可以用一个flag区分从左往右和从右往左,如果是从右往左插入直接链表尾插就行,如果是从右往左我们可以遍历的时候采用链表头插法就行。
2025-06-25 22:03:09
114
原创 leetcode373.寻找和最小的k对数字
这题优先想到小根堆,利用小根堆,存储一个三元组,三元组第一个数字表示选取两个数组的值的总和,用于小根堆排序,第二个数是数组1的下标,第三个数是数组2的下标。的方式逐步扩展,而无需枚举所有数对。
2025-04-29 12:29:58
233
原创 leetcode57.插入区间
模拟类型的题目,首先是要找到新插入区间融合进来后的起始点,如果新区间起始点在当前区间范围或者比这个范围还小则视为找到了起始点;然后是寻找融入进来区间的右边界,有边界是只有新区件右边界比当前区间的右端点或者左端点还要小才视为找到。
2025-04-19 15:54:01
229
原创 leetcode298.生命游戏
本题是一道模拟题目,为了不引入额外数组浪费空间采用引入额外状态标记细胞状态变化的方法来求解。本题关键在于求解周围活细胞数量,所以周围只要有1或-1就活细胞数量+1。0表示死细胞,1表示活细胞,-1表示由活变死,2表示由死变活。
2025-04-15 16:08:07
221
原创 leetcode36.有效的数独
遍历网格得到格子中的数字,可以映射到行、列、九宫格中该数字是否使用过,如果使用过那么棋盘不合法,没有使用过则将当前映射到的位置置为true。由于固定9*9网格,数字由1-9,所以采用数组代替哈希表。
2025-04-14 16:59:48
176
原创 leetcode167.两数之和||
双指针解法:因为原来的数组有序,所以可以通过改变区间的方式求解,当左右指针的值小于目标,那么右移左指针,大于就左移右指针,相等时则为结果。
2025-04-13 09:59:19
166
原创 leetcode68.左右文本对齐
难度高的模拟类型题目,关键点在于事先知道有多少单词要放在本行并且还要知道本行是不是最后一行(最后一行需要全部单空格右对齐,不是最后一行就空格均摊),非最后一行的空格要尽可能平等的均摊在相邻单词间的空隙内。leetcode-字符串篇 68题 文本左右对齐。
2025-04-10 19:56:40
232
原创 leetcode380. O(1) 时间插入、删除和获取随机元素
为了保证常数时间插入和获取采用可变数组存储数据,那么在删除一个随机元素时如果需要移动元素需要n时间复杂度,那么进一步优化可以采用哈希表获取删除元素所在的位置然后把最后一个元素覆盖到要删除的位置最后再把最后一个元素删除掉,这样就可以避免循环移动覆盖的时间开销。
2025-04-08 16:30:05
157
原创 leetcode97.交错字符串
dp[i][j]的含义是s2的前i个字符和s1的前j个字符能够交错组成s3的前i+j个字符,dp[0][0]表示空串能够组成空串一定为true,所以多引入一行一列作为辅助。一维dp空间优化版本, 这里需要注意的是循环时j为0这个情况要单独判断。遍历顺序为常规的上到下左到右。
2025-04-07 11:11:27
226
原创 leetcode169.多数元素
result用来记录当前遍历过的数字中出现次数最多的,count用来记录result比其他的所有元素出现的次数多了多少。【力扣hot100】【LeetCode 169】多数元素。
2025-04-06 16:26:53
249
原创 leetcode4.寻找两个正序数组中的中位数
基本思路是将两个数组看成一个数组,然后划分为两个部分,若为奇数左边部分个数多1,若为偶数左边部分等于右边部分个数。i表示数组1划分位置(i为4是索引4也表示i的左半部分有四个元素),j表示数组2的划分位置,i和j的划分保证左边部分的所有值都不超过右边部分的最小值,这样中位数就在i和j的附近,与i、j、i-1、j-1这四个位置上的元素有关。若总长度为奇数,则结果为左部分的最大值,若为偶数则结果为左部分的最大值和右边部分的最小值取均值。LeetCode004-两个有序数组的中位数-最优算法代码讲解。
2025-04-05 21:47:51
258
原创 leetcode295.数据流的中位数
创建大根堆和小根堆,保证大根堆和小根堆的数量差异在1之内并且大根堆的最大值总是不超过小根堆的最小值(大根堆的所有元素都小于等于小根堆的所有元素,这样就将所有的元素一分为2了),这样中位数就只与大根堆的最大值和小根堆的最小值有关。添加元素时先扔到大根堆,如果大根堆的最大大于小根堆的最小,那么把这个最大送给小根堆,之后如果大根堆的元素比小根堆多2那么就将小根堆的元素送给大根堆,反之同理。【大厂程序员带你刷力扣】【LeetCode 295】数据流的中位数|大根堆|小根堆。
2025-04-05 13:04:36
202
原创 leetcode215.数组中的第k个最大元素
快速排序中我们随机选择一个轴值,左边的元素都小于他,右边的元素都大于他,然后返回这个下标索引(分割点),如果这个分割点恰好是n-k那么这就是最终结果,如果分割点比n-k小那么说明答案应该在右边的区间,反之答案就在左边的区间。基于快速排序思路的一种求解,我们的问题是求解第k个最大的元素,那么也就是排序后数组下标索引在n-k的位置。7-2「力扣」第 215 题:数组中的第 K个最大元素。如果都没找到说明k肯定不合法直接返回-1。
2025-04-05 11:59:46
257
空空如也
各位帮我看看错哪了,我想制作一个可以放入任何自定义类型和内置类型的数组
2022-11-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人