![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode刷题
文章平均质量分 77
leetcode刷题笔记
是谢添啊
做一个纯粹的技术分享者。别担心打扰我,我随时都在。
展开
-
力扣442数组中重复的数据:六种实现方案,暴力线性查找,排序+二分查找,排序+双指针,哈希查找,标记数组,复用 nums 成为标记数组
【代码】力扣442数组中重复的数据:六种实现方案,暴力线性查找,排序+二分查找,排序+双指针,哈希查找,标记数组,复用 nums 成为标记数组。原创 2024-04-13 14:32:11 · 397 阅读 · 1 评论 -
力扣82删除排序链表中的重复元素 II:思路分析+代码实现+方法总结(三指针法&快慢指针法【双指针】&递归法)
p1 是待删除的上一个节点,每次循环对比 p2、p3 的值。 如果 p2 与 p3 的值重复,那么 p3 继续后移,直到找到与 p2 不重复的节点,p1 指向 p3 完成删除。如果 p2 与 p3 的值不重复,p1,p2,p3 向后平移一位,继续上面的操作。p2 或 p3 为 null 退出循环。p2 为 null 的情况,比如链表为 1 1 1 null。递归函数负责返回:从当前节点(我)开始,完成去重的链表。1. 若我与 next 重复,一直找到下一个不重复的节点,以它的返回结果为准。原创 2023-05-15 03:29:11 · 506 阅读 · 2 评论 -
力扣83删除排序链表中的重复元素:代码实现+思路分析+方法总结(快慢指针法&递归)
步骤:当节点数小于2时,则不会发生重复节点的情况,无需删除,直接返回。设置快慢指针,慢指针指向头节点head,快指针指向 head 的下一个节点。使用fast指针遍历链表,每次对 fast.val 与 slow.val 进行比较。快慢指针的val值相等,说明当前链表中还存与当前slow指向节点的值相等的节点。不需要理会当前fast指向的节点,直接向后移动一位。当 fast和last的val值不相等的时候,将slow的下一个节点设置为fast即可达到跳过重复节点的效果。快慢指针的val值不相等,说原创 2023-05-14 01:11:58 · 364 阅读 · 0 评论 -
力扣19删除链表的倒数第 N 个结点:思路分析+图文全解+方法总结(快慢指针法&递归法)+深入思考
我们知道在单链表中我们想要删除一个节点需要依靠它的上一个节点,而头节点head没有上一个节点,因此我们暂时给 head 前面加一个伪头节点 sentinel 指向 head。这样就能像其它节点一样通过待删除节点的上一个节点来删除待删除的节点。已知链表 1 -> 2 -> 3 -> 4 -> 5,需要删除倒数第 2 个节点(n = 2)但上述代码有一个问题,就是若删除的是第一个节点,它没有上一个节点,因此可以加一个哨兵来解决。思路:写一个递归函数,用来返回下一个节点的倒数序号。原创 2023-05-14 00:26:58 · 587 阅读 · 0 评论 -
力扣203移除链表元素:思路分析+代码实现+方法总结(伪头节点法&递归)
如果用自身来遍历的话,当满足 tmp.val = val 时,应该删除自身,这时候如何将该 tmp 的上一个节点与 tmp 的下一个节点所联系是一个问题。思路,递归函数负责返回:从当前节点(我)开始,完成删除的子链表。原创 2023-05-13 01:14:38 · 325 阅读 · 0 评论 -
力扣206反转链表:代码实现+图文全解+方法总结(四种方法)
方法一:生成新节点到新链表。方法二:复用旧节点到新链表(面向过程式思想方法&面向对象式思想方法)。方法三:递归。旧链表中移动旧节点。原创 2023-05-11 02:32:01 · 1342 阅读 · 0 评论 -
力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 & 记忆法/备忘录)
杨辉三角数学规律公式。记忆法解杨辉三角。我们来看下两种方法的执行效率:1️⃣数学规律法2️⃣记忆法很明显,数学规律法花费的时间更少,这是因为数学规律法只需要我们逐一计算第 rowIndex 行每个元素的值即可,而记忆法需要我们从第0行开始,计算每一行每一个元素的值。原创 2023-04-14 15:10:13 · 865 阅读 · 0 评论 -
力扣118杨辉三角:代码实现+注释详解+其它思考
你可能有疑惑为什么不用add方法代替set方法,是因为我用了对称的方法减少遍历次数,如果用add会很麻烦,你可以试试。当然,这种对称的方法效率可能比起全部遍历不会高,因为存在需要将array->list的过程,还是会把该层的全部元素遍历。也就是说,set方法调用的前提条件是该索引位置已经设置过了元素值,否则是无法设置的,会抛出异常。对于generate()方法的这一部分,最初的写法是如下。即是每层直接创建ArrayList对象,将元素值通过。,于是进行debug发现。原创 2023-04-14 14:38:29 · 713 阅读 · 0 评论 -
力扣面试题 08.06. 汉诺塔问题:思路分析+图文详解+代码实现
在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。假设每根柱子标号 a,b,c,每个圆盘用 1,2,3 …表示其大小,圆盘初始在 a,要移动到的目标是 c。而 n-1 个圆盘如何移动呢,重复父问题的操作即可。如果只有一个圆盘,此时是最小问题,可以直接求解。A中盘子的数目不大于14个。因此,如果有n个圆盘,那么。如果有两个圆盘,那么。如果有三个圆盘,那么。如果有四个圆盘,那么。原创 2023-04-14 12:56:05 · 565 阅读 · 0 评论 -
力扣70爬楼梯:思路分析+优化思路+代码实现+补充思考
leecode,斐波拉契数列,java实现,思路分析,超时原因原创 2023-04-14 03:14:00 · 664 阅读 · 0 评论 -
力扣35搜索插入位置:思路分析+图文详解+代码实现+拓展java源码
leetcode,Java底层源码对二分查找的实现,利用Arrays实现二分查找目标值,不存在则插入,返回≥目标的最靠左索引,leftmost,rightmost,图文描述,代码实现,(left + right) >>> 1的分析,原创 2023-04-04 23:26:20 · 952 阅读 · 0 评论 -
力扣34在排序数组中查找元素的第一个和最后一个位置:思路分析+图文详解+代码实现(最靠左索引,最靠右索引)
leetcode,二分查找,在排序数组中查找元素的第一个和最后一个位置,最靠左索引,最靠右索引原创 2023-04-05 00:34:12 · 276 阅读 · 0 评论 -
力扣704二分查找:思路分析+代码实现(递归与非递归)
二分查找简介,二分查找思路分析,基础版-查找范围区间左闭右闭,基础版-查找范围区间左闭右开,平衡版,平衡法,递归实现,非递归实现原创 2023-04-04 21:06:32 · 673 阅读 · 0 评论