
hot100
林下清风~
这个作者很懒,什么都没留下…
展开
-
力扣hot100——114.二叉树展开为链表
将左子树插到右子树的位置,将原来的右子树插到左子树的最右结点,遍历右结点重复以上步骤,直至右结点为空。原创 2025-04-30 17:45:43 · 318 阅读 · 0 评论 -
力扣hot100——98.验证二叉搜索树
抓住二叉搜索树的一个性质:二叉搜索树的中序遍历是升序的。用递归的方法中序遍历二叉搜索树,用pre记录前一个结点,并在中间和当前的根节点比较。这段代码仅关注于局部,仅考虑根节点的左右结点是否满足二叉搜索树的条件,没有考虑根结点的整个左右子树是否满足二叉搜索树的条件。首先列举一个错误代码。原创 2025-04-30 17:45:12 · 453 阅读 · 0 评论 -
力扣hot100——239.滑动窗口最大值
同一个窗口内,如果右侧元素大于左侧元素,那么左侧元素不必考虑,因为此时窗口内的最大元素一定不是左侧元素,并且当窗口向右移动时左侧元素可能不在窗口中,因此永久移除这样的左侧元素。优先级队列自动按照大小排序,队首即为最大元素,但取队首时要注意元素是否在滑动窗口内,如果不在则弹出。原创 2025-04-29 20:49:03 · 406 阅读 · 0 评论 -
力扣hot100——2.两数相加
两种思路,第一种将两个链表转换成整形数据相加,和再转换成链表返回,但由于结点数可达到一百远超int和long的范围,故不可取;因此考虑模拟两数加法。将两个链表看成等长,若为空则看作零。从个位依次计算两数相加,并记录进位。原创 2025-04-25 18:00:49 · 247 阅读 · 0 评论 -
力扣hot100——138.随机链表的复制
利用哈希表,构造原链表结点与新链表结点的映射关系。然后利用哈希表,构建新链表结点的指向(next和random)第一次遍历:在原链表的基础上,在每一个结点后面复制一个与它相同的结点。第三次遍历:将新结点和旧结点拆分为两个链表,返回新链表。第二次遍历:构建新结点的random指向。原创 2025-04-25 18:00:19 · 231 阅读 · 0 评论 -
力扣hot100——24.两两交换链表中的节点
我自己的解法:由于没有设立虚拟头结点,而是定义了一个pre指针,导致略显冗余,额外定义了翻转后的头结点,循环条件无法利用,而是在循环中添加循环条件。原创 2025-04-25 17:59:45 · 315 阅读 · 0 评论 -
力扣hot100——206.反转链表
两个变量记录当前指针和前一个指针,再用临时变量记录当前变量的下一个结点,修改当前指针的指向,然后迭代临时变量赋值给当前指针,当前指针赋给前一个指针,临时变量记录当前指针的下一个,直到当前指针为空。定义一个递归函数,两个参数为cur和pre,直到cur为空停止递归,返回pre(尾节点),开始回溯,回溯时修改指针指向。原创 2025-04-23 13:29:24 · 297 阅读 · 0 评论 -
力扣hot100——234.回文链表
数组查找效率较高,而增删效率低;与之相反,链表增删效率低,查找效率慢。而判断回文需要用到大量的查找操作,因此将链表元素放入数组,在数组中用双指针进行操作。先找到中点,将链表的后半部分反转,然后将链表的前半部分和后半部分依次比较。原创 2025-04-23 13:27:56 · 362 阅读 · 0 评论 -
力扣hot100——54.螺旋矩阵
模拟螺旋过程,定义四个变量记录上下左右边界,每遍历一层就更新一个边界,若边界交错就退出循环,否则继续模拟。原创 2025-04-22 15:19:07 · 254 阅读 · 0 评论 -
力扣hot100——160.相交链表
利用链表长度差,先让较长的链表移动若干步,使得两链表剩余部分相同,依次比较剩余部分的结点,遇到第一个相同的结点就返回。原创 2025-04-22 15:18:00 · 293 阅读 · 0 评论 -
力扣hot100——41.缺失的第一个正数
将数组看作哈希表以节省空间数组的映射规则是第i个位置存放值为i+1的元素,首先按照数组映射规则交换数组,然后依次遍历数组找到第一个不符合数组映射规则的元素,如果没有找到则为数组长度加1。原创 2025-04-21 22:54:18 · 541 阅读 · 0 评论 -
力扣hot100——73.矩阵置零
创建一个vector记录要置零的行号和列号遍历两次矩阵,第一次记录值为0的元素的行和列,第二次将对应的行和列置零。原创 2025-04-21 22:53:40 · 176 阅读 · 0 评论 -
力扣hot100——42.接雨水
依次计算每个宽度为1的柱子所容纳的雨水,可由左右两侧柱子最大高度的最小值减去目前柱子的高度得到,左右两侧柱子的最大高度可分别创建两个数组计算得到。原创 2025-04-16 16:56:42 · 344 阅读 · 0 评论 -
力扣hot100——15.三数之和
首先对数组进行排序,for循环枚举第一个元素,双指针指向第二、三个元素。计算三者之和,如果和大于0,元素偏大,减小右指针;如果小于0,元素偏小,增大左指针。同时注意考虑去重操作。三元组元素索引不可重复,三元组元素不能完全相同。原创 2025-04-16 16:56:07 · 297 阅读 · 0 评论 -
力扣hot100——11.盛最多水的容器
首先先让宽度最大,左指针指向最左端,右指针指向最右端;然后左右指针收缩,此时必然导致宽度减小,如果高度也减小必然不是最大值,而高度由左右指针最小的一个决定,因此移动其中最小的一个。原创 2025-04-16 16:55:35 · 215 阅读 · 0 评论 -
力扣hot100——283.移动零
分为两个阶段,第一个阶段按序遍历数组,将非零元素放在数组前面;第二个阶段将剩余位置填充为0。原创 2025-04-16 16:54:57 · 202 阅读 · 0 评论 -
力扣hot100——128.最长连续序列
考虑使用哈希表,哈希表将查询的时间降到O(1);并且进行剪枝操作,遍历元素是x,如果x-1也在哈希表中,那么x-1为起点的序列一定比x为起点的序列长,此时跳过此次循环,执行下一次循环。由于时间复杂度要求O(n),所以排除排序的可能,排序的时间复杂度是O(nlogn)。原创 2025-04-15 13:35:57 · 329 阅读 · 0 评论 -
力扣hot100——49.字母异位词分组
所谓“字母异位词”的共同点是组成的字母元素相同,个数相同但是顺序不同。我们可以将所有的字符串按照字典序排列,得到一个新的字符串,字母异位词得到的新字符串相同,然后利用unordered_map存储,以字典序字符串作为key值,value存放字母异位词。将组成字母相同的字符串放在一起。原创 2025-04-15 13:35:17 · 230 阅读 · 0 评论 -
力扣hot100——1.两数之和(从暴力到最优)
在一个数组中找到两个不同的元素使得和为target,返回其数组下标。原创 2025-04-15 13:34:16 · 305 阅读 · 0 评论