剑指offer之合并两个排序的链表
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=13&&tqId=11169&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
没什么思路
代码
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if (!pHead1 && !pHead2) { return nullptr; } else if (!pHead1 && pHead2) { return pHead2; } else if (!pHead2 && pHead1) { return pHead1; } else { ListNode *head; if (pHead1->val >= pHead2->val) { head = pHead2; pHead2 = pHead2->next; } else { head = pHead1; pHead1 = pHead1->next; } ListNode *list = head; while (pHead1 != NULL || pHead2 != NULL) { if (pHead1 == NULL) { list->next = pHead2; pHead2 = pHead2->next; list = list->next; } else if (pHead2 == NULL) { list->next = pHead1; pHead1 = pHead1->next; list = list->next; } else { if (pHead1->val <= pHead2->val) { list->next = pHead1; pHead1 = pHead1->next; list = list->next; } else { list->next = pHead2; pHead2 = pHead2->next; list = list->next; } } } return head; } } };