链表
Leetcode链表
软件园里卖煎饼
以文载意,以理铸心
展开
-
每日任务:链表.面试题 02.06. 回文链表
解题思路遍历链表并加入到双端队列中将双端队列每次取头和尾,直到为空或为1代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public boolean isPalindrome(ListNode head原创 2021-04-20 16:29:26 · 64 阅读 · 0 评论 -
每日一题:25. K 个一组翻转链表
解题思路先遍历链表找出链表的的长度,并将每个节点加入到list集合中判断需要多少次,每次取出K个节点加入到新链表后如果还有剩余,再将剩余的节点加入代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } *原创 2021-04-16 12:54:50 · 44 阅读 · 0 评论 -
每日任务:链表.24. 两两交换链表中的节点
解题思路先遍历链表找出链表的的长度,并将每个节点加入到list集合中判断需要多少次,每次取出两个节点加入到新链表后如果还有剩余,再将剩余的节点加入代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } *原创 2021-04-16 12:53:41 · 50 阅读 · 0 评论 -
每日一题:86. 分隔链表
解题思路构建两条新链表1.一条用来存小于x的数,一条用来存小于等于x的数2.将两条链表链接代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNo原创 2021-03-08 22:32:06 · 46 阅读 · 0 评论 -
探索链表 旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5-&...原创 2020-03-30 15:47:40 · 65 阅读 · 0 评论 -
每日一题 链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.v...原创 2020-03-23 10:11:04 · 98 阅读 · 1 评论 -
链表专题6.扁平化多级双向链表
您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。示例:输入:1—2---3—4---5—6–NULL|7—8---9—10–NULL|11–12–NULL输出:1-2-3-7-8-11...原创 2020-03-19 10:26:18 · 124 阅读 · 0 评论 -
链表专题6.两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2020-03-18 12:00:18 · 107 阅读 · 3 评论 -
链表专题5.奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2-&g...原创 2020-03-17 21:43:27 · 864 阅读 · 0 评论 -
链表专题4.移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5***解题思路1.创造一个节点不断向后移动,如果其后面的值等于val值则直接跳过代码如下:***```cppclass Solution {public: ListN...原创 2020-03-17 20:08:29 · 82 阅读 · 0 评论 -
Leetcode 初级算法:链表6.环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解...原创 2020-03-16 18:14:48 · 105 阅读 · 0 评论 -
Leetcode 初级算法:链表5.回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解题思路1.使用数组将所有的数读取出来再进行比较代码如下:```cpp/** * Definition for singly-linked list...原创 2020-03-11 15:17:45 · 106 阅读 · 0 评论 -
Leetcode 初级算法:链表4.合并两个有序链表
合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:创建一个新的链表,因为两个链表都是有序,所以先进行比较再导入即可:```cpp/** * Definition for sing...原创 2020-03-10 22:54:39 · 108 阅读 · 0 评论 -
Leetcode 初级算法:链表3.反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解题思路:利用双指针头插法来进行翻转,代码如下:```cpp/** * Definition for singly-linked list. ...原创 2020-03-10 16:35:25 · 123 阅读 · 0 评论 -
Leetcode 初级算法:链表2.删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解题思路:第一种,设置qp两个指针同时指向head,然后先让p指针向后移动,并在移动...原创 2020-03-09 22:15:34 · 109 阅读 · 0 评论 -
Leetcode 初级算法:链表1.删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], node = 1输出: [4,...原创 2020-03-09 22:05:23 · 182 阅读 · 0 评论 -
链表专题3.相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如...原创 2020-03-17 13:19:33 · 86 阅读 · 0 评论 -
链表专题2.环形链表 II
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head =...原创 2020-03-17 12:39:20 · 86 阅读 · 1 评论 -
链表专题1.设计链表
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。...原创 2020-03-16 23:09:17 · 118 阅读 · 0 评论