LeetCode
FLASH 的 LeetCode 之旅
.滄海难为水
流水不争先~
展开
-
【LeetCode】138. 复制带随机指针的链表
第一次遍历原链表,同时每次迭代时申请一个新结点,复制原链表结点的信息(val)给新结点,再将结点进行连接迭代,组成链表。第二次迭代,也是该题最关键的一步,确定random的指向,通过原链表random指向的相对位置进行类比推理,最终确定指向。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。原创 2023-05-13 21:57:42 · 438 阅读 · 1 评论 -
【LeetCode】142. 环形链表Ⅱ
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。一个指针从相遇点走,一个指针从链表头开始走,最终会在入口点相遇。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!原创 2023-05-10 21:50:57 · 88 阅读 · 1 评论 -
【LeetCode】160. 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!,函数返回结果后,链表必须。整个链式结构中不存在环。原创 2023-05-09 16:07:26 · 67 阅读 · 0 评论 -
【牛客网】OR36 链表的回文结构
大家可能不画图的话,会认为结点数为奇数,在分割后比较时head指向的结点会比后半部分的结点数少,可是不要忘了我们只是将中间结点的next进行改变,而中间结点的前一位的next仍然指向的是中间结点。接下来就是对后半部分链表进行逆置,逆置完成后,同时对两个链表进行 遍历对比,如若有莫一项有不同,则该链表不是回文结构,若遍历完后都没有出现不同的结点,即可判定是回文结构。对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。——分割+逆置,遍历比较。原创 2023-05-08 14:37:28 · 69 阅读 · 0 评论 -
【牛客网】CM11 链表分割
学习链表必会的经典例题,学习好的思路原创 2023-05-07 19:16:54 · 71 阅读 · 0 评论 -
【LeetCode】21. 合并两个有序链表
新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。原创 2023-05-06 14:15:25 · 59 阅读 · 0 评论 -
【牛客网】求链表中倒数第k个结点
情况一: fast指针 走k步,若fast不指向NULL,就让指针fast 和 指针slow 同时走,直到fast指向空,则指针slow指向的是倒数第k个结点。(该过程要注意fast刚好指向NULL的情况)情况二:指针fast 在未走完k步就指向了NULL,则说明k超出了链表的长度,则此时不存在倒数第k个结点。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!输入一个链表,输出该链表中倒数第k个结点。原创 2023-05-05 17:13:50 · 77 阅读 · 0 评论 -
【LeetCode】206. 反转链表
创建两个指针进行单链表两结点之间的反转,在创建一个指针进行迭代。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!,请你反转链表,并返回反转后的链表。原创 2023-05-04 17:04:56 · 86 阅读 · 0 评论 -
【LeetCode】203. 移除链表元素
设置两个指针,prev 和 cur,分别指向NULL,和 head。若 cur->val 不等于 val,则将 cur 和 prev->next 连接起来。否则将 cur 指向 cur->next 再次进行判断,并且 free(cur)。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!遍历当前的链表,把不等于 val 的结点拿下来尾插。这里需要考虑如果头结点就等于 val 的情况!,请你删除链表中所有满足。给你一个链表的头节点。原创 2023-04-30 18:47:28 · 64 阅读 · 0 评论 -
【LeetCode】88.合并两个有序数组
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!原创 2023-04-29 23:53:04 · 69 阅读 · 0 评论 -
【LeetCode】26.删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums的其余元素与 nums 的大小不重要。返回 k。原创 2023-04-28 21:13:50 · 68 阅读 · 1 评论 -
【LeetCode】27. 移除元素
创建一个新数组,和两个指针dst(指向新数组),src(指向原数组),若nums[src]不等于val,则将nums[src]赋值给nums[dst],dst++,src++。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。依次遍历数组,在找到等于val的值的元素后,依次将后续元素进行前移覆盖。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!原创 2023-04-28 08:30:00 · 595 阅读 · 0 评论 -
【LeetCode】189. 轮转数组
旋转k次,一次旋转一个。每次将最右边的数字保存一下,然后依次将剩余的元素进行右移,最后将保存的数字添加到最左侧即可。在进入数据结构部分,我还是建议大家可以试试画图理解比较有用,我今后也会可以去训练这部分的能力。先将前n-k个元素进行逆置,再将后k个元素进行逆置,最后将数组整体逆置。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!尽可能想出更多的解决方案,至少有。不同的方法可以解决这个问题。,将数组中的元素向右轮转。你可以使用空间复杂度为。时间复杂度为:O(N)空间复杂度为:O(1)原创 2023-04-27 08:30:00 · 473 阅读 · 0 评论 -
【LeetCode】面试题 17.04. 消失的数字
根据单身狗系列问题,我们可以利用异或去解决这类有明显特征的题目,将出现两次的数字进行异或得零。最终剩余的数即为消失的数字。的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!本题相对书上原题稍作改动。O(n)时间内完成吗?原创 2023-04-26 11:06:42 · 88 阅读 · 1 评论 -
【LeetCode】14. 最长公共前缀
我们需要在一个字符串数组中找到一个最长的公共前缀,就可以以第一个字符串的第 i 个字符为标准,依次进行其它字符串第 i 个字符进行对比,若每个字符串都拥有该字符,将下标向后移动一位再进行比较,直到出现其他字符串中的第 i个字符与第一个字符串中的第 i个字符不相同为止。然后将第一个字符串中第 i个字符置为 ‘\0’(目的是将第一个字符串作为结果返回,且到不相同的字符停止返回)。原创 2023-03-10 20:53:04 · 170 阅读 · 5 评论 -
【LeetCode】13. 罗马数字转整数
通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。由于当罗马数字在转换成整数时有几个特殊情况(罗马数字中小的数字在大的数字的右边),因此我们在设计代码时应该是从右向左来依次进行转化相加,设计两个变量来分别代表两个相邻罗马数字所代表的整数,这两个变量的作用主要是来判断是否存在转换规则下的特殊情况。例如, 罗马数字 2 写做 II ,即为两个并列的 1。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。原创 2023-03-08 21:39:34 · 1460 阅读 · 7 评论 -
【LeetCode】9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。整数分为正整数,负整数和零,由于负整数有负号的缘故,应首先被排除不是回文数。这是例如,121 是回文,而 123 不是。原创 2023-03-07 20:35:22 · 199 阅读 · 11 评论 -
【LeetCode】1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。要找出一个数组中的两个目标值,我们可以使用数组下标进行 “定一移一” 的形式遍历数组,找到符合要求的两个数后,将两个数存入一个数组输出就可以了。当然,以博主现在的水平也只能用暴力破解——会导致时间复杂度为 n2,有大佬偷偷告诉我,还有更优的方法(题目链接:https://leetcode.cn/problems/two-sum/)原创 2023-03-07 20:03:46 · 2308 阅读 · 5 评论