Leetcode(链表)
文章平均质量分 53
Leetcode(链表)
道纪书生
博士在读,国家奖学金获得者,中国机器人大赛全国亚军,研究方向:CV/SVBRDF Estimation/Object Counting/Swarm Intelligence/Evolutionary Computation,学术or技术交流欢迎私信。
展开
-
Leetcode-113. 路径总和 II
链接113. 路径总和 II题目给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5原创 2022-03-03 16:38:34 · 503 阅读 · 0 评论 -
Leetcode-1019: 链表中的下一个更大节点
题目链接https://leetcode-cn.com/problems/next-greater-node-in-linked-list/题目给出一个以头节点head作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, ... 。每个节点都可能有下一个更大值(next larger value):对于node_i,如果其next_larger(node_i)是node_j.val,那么就有j > i且node_j.val ...原创 2021-09-02 16:03:31 · 147 阅读 · 0 评论 -
Leetcode-92: 反转链表 II (逐行注释)
题目链接https://leetcode-cn.com/problems/reverse-linked-list-ii/题目给你单链表的头指针 head 和两个整数left 和 right ,其中left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = ..原创 2021-09-02 15:24:30 · 121 阅读 · 0 评论 -
Leetcode-剑指 Offer 22. 链表中倒数第k个节点 (20210902打卡题)
题目链接https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例给定一个链表: 1->2->3->4-&g原创 2021-09-02 09:42:05 · 135 阅读 · 0 评论 -
Leetcode-206: 反转链表
题目链接https://leetcode-cn.com/problems/reverse-linked-list/题目给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]思路定义前后两个指针cur1和cur2,依次改变每个结点nex...原创 2021-09-01 16:54:13 · 89 阅读 · 0 评论 -
Leetcode-82: 删除排序链表中的重复元素 II
题目链接https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。示例示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,...原创 2021-09-01 15:45:11 · 94 阅读 · 0 评论 -
Leetcode-61: 旋转链表
题目链接https://leetcode-cn.com/problems/rotate-list/题目给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。示例示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示链表中节点的数目在范围[0, 500]内 -100 <= Node.val ...原创 2021-09-01 11:16:56 · 104 阅读 · 0 评论 -
Leetcode-19:删除链表的倒数第 N 个结点(快慢指针)
题目链接https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/题目给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出...原创 2021-09-01 10:48:45 · 148 阅读 · 0 评论 -
Leetcode-2: 两数相加
题目链接https://leetcode-cn.com/problems/add-two-numbers/题目给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807...原创 2021-09-01 10:07:30 · 77 阅读 · 0 评论 -
Leetcode-1669: 合并两个链表
题目链接https://leetcode-cn.com/problems/merge-in-between-linked-lists/题目给你两个链表list1 和list2,它们包含的元素分别为n 个和m 个。请你将list1中下标从 a 到 b 的全部节点都删除,并将list2接在被删除节点的位置。下图中蓝色边和节点展示了操作后的结果:请你返回结果链表的头指针。示例示例 1:输入:list1 = [0,1,2,3,4,5], a = ...原创 2021-08-31 18:23:07 · 96 阅读 · 0 评论 -
Leetcode-24: 两两交换链表中的节点
题目链接https://leetcode-cn.com/problems/swap-nodes-in-pairs/题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示链表中节点的数目在范围[0, 1.原创 2021-08-31 14:58:39 · 76 阅读 · 0 评论 -
Leetcode-141:环形链表
题目链接https://leetcode-cn.com/problems/linked-list-cycle/题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回原创 2021-08-30 20:32:43 · 101 阅读 · 0 评论 -
Leetcode-160:相交链表
题目链接https://leetcode-cn.com/problems/intersection-of-two-linked-lists/题目给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。示例示例1输入:intersectVal = 8, li...原创 2021-08-30 16:00:58 · 141 阅读 · 0 评论 -
Leetcode-83:删除排序链表中的重复元素
题目链接https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/题目存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。示例示例1:输入:head = [1,1,2]输出:[1,2]示例2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示链表中节点数目在范围[...原创 2021-08-30 10:41:16 · 94 阅读 · 0 评论 -
Leetcode-21: 合并两个有序链表(逐行注释)
题目链接https://leetcode-cn.com/problems/merge-two-sorted-lists/题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示...原创 2021-08-30 10:23:00 · 97 阅读 · 0 评论 -
Leetcode-剑指 Offer 06: 从尾到头打印链表
题目链接https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例示例 1:输入:head = [1,3,2]输出:[2,3,1]限制0 <= 链表长度 <= 10000思路遍历链表,用一个栈储存每个结点的val,然后依次将栈中元素弹出到数组中。C++ Code/** *原创 2021-08-29 22:54:57 · 97 阅读 · 0 评论 -
Leetcode-剑指 Offer II 024: 反转链表
目录题目链接题目示例提示思路一C++ Code思路二C++ Code思路三C++ Code题目链接https://leetcode-cn.com/problems/UHnkqh/题目给定单链表的头节点head,请反转链表,并返回反转后的链表的头节点。示例示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head ..原创 2021-08-29 22:43:29 · 107 阅读 · 0 评论 -
Leetcode-面试题 02.02:返回倒数第 k 个节点
题目链接https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci/题目实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例输入: 1->2->3->4->5 和 k = 2输出: 4说明给定的k保证是有效的。思路本题和Leetcode-剑指 Offer 22: 链表中倒数第k个节点几乎一模一样,可参考该题思路。..原创 2021-08-29 21:54:47 · 114 阅读 · 0 评论 -
Leetcode-剑指 Offer 22: 链表中倒数第k个节点
题目链接https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例给定一个链表: 1->2->3->4-&g原创 2021-08-29 21:42:16 · 148 阅读 · 0 评论 -
Leetcode-1290: 二进制链表转整数
题目链接https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/题目给你一个单链表的引用结点head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = .原创 2021-08-29 21:16:18 · 206 阅读 · 0 评论 -
Leetcode-237:删除链表中的节点
题目链接https://leetcode-cn.com/problems/delete-node-in-a-linked-list/题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 --head =[4,5,1,9],它可以表示为:示例示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变...原创 2021-08-29 20:44:02 · 76 阅读 · 0 评论 -
Leetcode-面试题 02.03:删除中间节点
题目链接https://leetcode-cn.com/problems/delete-middle-node-lcci/题目若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点c(位于单向链表a->b->c->d->e->f中),将其删除后,剩余链表为a->b->d->e->f示例输入:节点5...原创 2021-08-29 20:00:26 · 163 阅读 · 0 评论 -
Leetcode-203: 移除链表元素
题目链接https://leetcode-cn.com/problems/remove-linked-list-elements/题目给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。示例示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head ...原创 2021-08-29 14:31:15 · 105 阅读 · 0 评论