![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
冷眼观world
社畜
展开
-
【简单】环形链表
让快指针的速度是慢指针的两倍,这样当慢指针走k步,快指针一定是2k步,两个指针此时一定相遇原创 2022-06-19 18:15:09 · 122 阅读 · 0 评论 -
【中等】删除链表的倒数第N个结点
注意要用到虚拟结点dummy,应对题目中示例二的情况。删除倒数第一个结点,所以需要倒数第2个结点帮助删除,但是一共只有一个结点,所以需要虚拟头结点协助。原创 2022-06-19 18:04:59 · 56 阅读 · 0 评论 -
【简单】相交链表
class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *p1 = headA, *p2 = headB; while (p1 != p2) { if (p1 == NULL) p1 = headB; else ...原创 2022-01-06 18:50:37 · 172 阅读 · 0 评论 -
【简单】链表的中间结点
class Solution {public: ListNode* middleNode(ListNode* head) { ListNode *slow = head, *fast = head; while (fast != NULL && fast->next != NULL) { slow = slow->next; fast = fast->next->.原创 2022-01-05 13:48:03 · 565 阅读 · 0 评论 -
【中等】删除链表的倒数第N个结点
class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* dummy = new ListNode(-1); dummy->next = head; ListNode* x = findNthFromEnd(dummy, n + 1); x->next = x->next->next; .原创 2022-01-04 14:28:21 · 966 阅读 · 0 评论 -
【困难】合并K个升序链表
class cmp { public: bool operator()(ListNode *a, ListNode *b) { return a->val > b->val; } };class Solution {public: bool less(ListNode *a, ListNode *b) { return a->val < b->val; } ListNode* mergeKLists(vector<ListNo..原创 2022-01-03 16:59:07 · 575 阅读 · 0 评论 -
【简单】合并两个有序链表
class Solution {public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { ListNode *dummy = new ListNode(-1); ListNode *p = dummy, *p1 = list1, *p2 = list2; while (p1 != NULL && p2 != NULL) { ...原创 2022-01-02 14:48:51 · 429 阅读 · 0 评论