🐳链表🐳
🐳链表🐳
排序由易到难
19.删除链表的倒数第N个节点
21.合并两个有序链表
24.两两交换链表中的节点
83.删除排序链表中的重复元素
141.环形链表
160.相交链表
206.反转链表
234.回文链表
328.奇偶链表
445.两数相加II
725.分隔链表
817.链表组件
删除链表的倒数第N个节点Leetcode 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
解题思路
使用快慢指针法,让快指针提前先走n+1步,再同步快慢指针直到快指针指向链表结尾时,慢指针刚好停留在需要删除结点的前驱。
添加头结点 dummy 是为了统一对链表增删的操作。
删除结点相当于链接时跳过此结点12345678910111213141516ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* dummy=new ListNode(-1); dummy->next=head; ListNode* fast=dummy; ListNode* slow=d ...
(Golang)链表学习记录
力扣链表学习记录,使用Golang的数据结构入门
链表
链表学习记录,若有不足请指出来
1 结点结构123456// Definition for singly-linked list.struct SinglyListNode { int val; SinglyListNode *next; SinglyListNode(int x) : val(x), next(NULL) {}};
2 操作与数组不同,我们无法在常量时间内访问单链表中的随机元素。 如果我们想要获得第 i 个元素,我们必须从头结点逐个遍历。 我们按索引来访问元素平均要花费O(N)时间,其中 N 是链表的长度。
添加操作-单链表
令插入结点的next为其插入位置下结点
原位置下一节点为要插入的结点即可
与数组不同,我们不需要将所有元素移动到插入元素之后。因此,您可以在 O(1) 时间复杂度中将新结点插入到链表中,这非常高效。
删除操作-单链表12//删除prev的下一结点prev->next == prev->next ->next;
删除第一个结点12SinglyListNode * ...