[剑指Offer] 16.合并两个排序链表
来源:互联网 发布:以色列人工智能武器 编辑:程序博客网 时间:2024/06/01 10:12
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
【思路1】递归
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class Solution {10 public:11 ListNode* Merge(ListNode* pHead1, ListNode* pHead2)12 {13 if(pHead1 == NULL)14 return pHead2;15 else if(pHead2 == NULL)16 return pHead1;17 ListNode* res = NULL;18 if(pHead1->val <= pHead2->val){19 res = pHead1;20 res->next = Merge(pHead1->next, pHead2);21 }else{22 res = pHead2;23 res->next = Merge(pHead1,pHead2->next);24 }25 return res;26 }27 };
【思路2】非递归,新建一个链表并保存头结点,将原来两个链表进行比较按顺序插入到新链表中,最后将有剩余的链表直接接上。
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class Solution {10 public:11 ListNode* Merge(ListNode* pHead1, ListNode* pHead2){12 if(pHead1 == NULL)13 return pHead2;14 else if(pHead2 == NULL)15 return pHead1;16 ListNode* res = NULL;17 ListNode* cur = NULL;18 while(pHead1 != NULL && pHead2 != NULL){19 if(pHead1->val <= pHead2->val){20 if(res == NULL)21 res = cur = pHead1;22 else{23 cur->next = pHead1;24 cur = cur->next;25 }26 pHead1 = pHead1->next;27 }else{28 if(res == NULL)29 res = cur = pHead2;30 else{31 cur->next = pHead2;32 cur = cur->next;33 }34 pHead2 = pHead2->next;35 }36 }37 if(pHead1 == NULL){38 cur->next = pHead2;39 }40 if(pHead2 == NULL){41 cur->next = pHead1;42 }43 return res;44 }45 };
阅读全文
0 0
- 剑指offer-16.合并两个排序的链表
- 剑指Offer--16.合并两个排序的链表
- [剑指Offer] 16.合并两个排序链表
- 剑指offer 17-合并两个排序表的链表
- 剑指Offer之合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 【剑指offer】Q17:合并两个排序的链表
- 剑指offer-17:合并两个排序的链表
- 剑指offer系列源码-合并两个排序的链表
- 剑指offer--合并两个排序的链表
- 剑指offer之合并两个排序的链表
- 剑指Offer之 - 合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指Offer-合并两个排序的链表
- 剑指offer:合并两个排序的链表 代码实现
- 《剑指Offer》面试题:合并两个排序的链表
- 合并两个排序的链表(剑指offer)
- [剑指Offer] 12.数值的整数次方
- [剑指Offer] 13.调整数组顺序使奇数位于偶数前面
- [剑指Offer] 14.链表中倒数第k个结点
- [剑指Offer] 15.反转链表
- 简单总结一下Java和javascript 中对于 josn对象、字符串的处理。
- [剑指Offer] 16.合并两个排序链表
- [剑指Offer] 17.树的子结构
- [剑指Offer] 18.二叉树的镜像
- [算法] 二维数组(长宽相等)逆时针旋转90°算法
- [剑指Offer] 19.顺时针打印矩阵
- [剑指Offer] 20.包含min函数的栈
- [剑指Offer] 21.栈的压入、弹出序列
- [剑指Offer] 22.从上往下打印二叉树
- [BinaryTree] 二叉搜索树(二叉查找树、二叉排序树)