Timeline
Timeline
2025-11-19
init
linked list
Problem:
You can first create a head node to facilitate tail insertion, and then release it at the end.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | struct ListNode { int val; ListNode *next; ListNode() : val(0) , next(nullptr) { } ListNode(int x) : val(x) , next(nullptr) { } ListNode(int x, ListNode *next) : val(x) , next(next) { }};class Solution { public: ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) { // Create a head node ListNode *list3_head = new ListNode; ListNode *p = list3_head; while (list1 != nullptr || list2 != nullptr) { if (list1 == nullptr && list2 != nullptr) { p->next = list2; list2 = list2->next; p = p->next; p->next = nullptr; } else if (list1 != nullptr && list2 == nullptr) { p->next = list1; list1 = list1->next; p = p->next; p->next = nullptr; } else if (list1 != nullptr && list2 != nullptr) { if (list1->val <= list2->val) { p->next = list1; list1 = list1->next; p = p->next; p->next = nullptr; } else { p->next = list2; list2 = list2->next; p = p->next; p->next = nullptr; } } } p = list3_head; list3_head = list3_head->next; delete p; return list3_head; }}; |
leetcode hot100 rewrite
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */struct ListNode { int val; ListNode *next; ListNode() : val(0) , next(nullptr) { } ListNode(int x) : val(x) , next(nullptr) { } ListNode(int x, ListNode *next) : val(x) , next(next) { }};class Solution { public: ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) { ListNode *virtual_head = new ListNode; ListNode *tail = virtual_head, *p; while (list1 != nullptr || list2 != nullptr) { if (list1 && list2) tail->next = list1->val < list2->val ? list1 : list2; else tail->next = (list1 == nullptr) ? list2 : list1; if (tail->next == list1) list1 = list1->next; if (tail->next == list2) list2 = list2->next; tail = tail->next; } tail = virtual_head->next; delete virtual_head; return tail; }}; |
