剑指offer——25. 合并两个排序的链表 发表于 2020-02-15 | 分类于 算法 , 剑指offer | 字数统计: 235 | 阅读时长 ≈ 1 剑指offer刷题 25. 合并两个排序的链表NowCoder 题目描述 解题思路递归1234567891011121314151617181920212223242526272829303132333435363738394041/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ #if 1 //迭代实现class Solution {public: ListNode* merge(ListNode* l1, ListNode* l2) { //边界 z保证以下都合法 if(!l1) return l2; if(!l2) return l1; //创建一个用于返回的节点 ListNode* conn = new ListNode(0); ListNode* tmp = conn; //跟踪 ListNode* p1 = l1, *p2 = l2; //跟踪 while(p1 && p2) //公共区域 { if(p1->val < p2->val) { tmp->next = p1; p1 = p1->next; } else { tmp->next = p2; p2 = p2->next; } tmp = tmp->next; } tmp->next = (p1) ? p1 : p2; return conn->next; } };#endif 迭代1234567891011121314151617181920class Solution {public: ListNode* merge(ListNode* l1, ListNode* l2) { //边界 z保证以下都合法 if(!l1) return l2; if(!l2) return l1; ListNode* conn = nullptr; if(l1->val < l2->val) { conn = l1; conn->next = merge(l1->next, l2); } else { conn = l2; conn->next = merge(l1, l2->next); } return conn; } }; 创作不易,欢迎打赏! 打赏 微信支付 支付宝 -------------本文结束感谢您的阅读-------------