题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类 */ ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { // write code here // pHead1 pHead2为空的情况 if(pHead1 == nullptr || pHead2 == nullptr){ return pHead1 != nullptr ? pHead1 : pHead2; } // 两个链表元素依次对比 if(pHead1 -> val <= pHead2 -> val){ // 递归计算 pHead1.next, pHead2 pHead1 -> next = Merge(pHead1 -> next, pHead2); return pHead1; }else{ // 递归计算 pHead1, pHead2.next pHead2 -> next = Merge(pHead1, pHead2 -> next); return pHead2; } } };
递归
tips:指针访问成员:当您有一个指向对象的指针时,您使用箭头操作符(->
)来访问该对象的成员。箭头操作符实际上是点号操作符(.
)和解引用操作符(*
)的组合。例如,如果ptr
是指向Person
对象的指针,那么ptr->name
等同于(*ptr).name
。