合并两个排序链表
来源:互联网 发布:hadoop大数据分析 编辑:程序博客网 时间:2024/06/05 19:38
问题描述:将两个排序链表合并为一个新的排序链表
样例
方法一(非递归方法):给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution {public: /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { // write your code here ListNode *head = NULL; ListNode *pre = NULL; if(l1 == NULL && l2 == NULL){ return NULL; } else if(l1 == NULL && l2!=NULL){ return l2; } else if(l1!=NULL && l2 ==NULL){ return l1; } while(l1 != NULL && l2 != NULL){ int val1 = 0,val2 = 0; val1 = l1->val; val2 = l2->val; ListNode* temp = (ListNode*)malloc(sizeof(ListNode)); if(val1<val2){ temp = l1; if(head == NULL){ head = temp; pre = head; } else{ pre->next = temp; pre = temp; } l1 = l1->next; } else{ temp = l2; if(head == NULL){ head = temp; pre = head; } else{ pre->next = temp; pre = temp; } l2 = l2->next; } } if(l1 == NULL){ pre->next = l2; } else if(l2 == NULL){ pre->next = l1; } return head; }};
方法二:(递归方法)
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution {public: /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if(l1 == NULL){ return l2; } if(l2 == NULL){ return l1; } ListNode *head = NULL; if(l1->val < l2->val){ head = l1; head->next = mergeTwoLists(l1->next,l2); } else{ head = l2; head->next = mergeTwoLists(l1,l2->next); } return head; }};
阅读全文
0 0
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序链表
- 第九天
- 使用命令行编译打包运行自己的MapReduce程序 hadoop2.7.3
- Unity3D
- JZOJ1203. 染色的立方体(2017.8B组)
- [Baltic2009]Radio Transmission题解
- 合并两个排序链表
- 希尔排序
- 用阿里云四步搭建你的专属网站
- Android消息处理机制(handler和message)-1
- 线索二叉树
- 嵌入式linux开机应用程序自启动
- Poj 2689 Prime Distance【素数区间筛】
- (HDU4501) 三维01背包 + 惯性写法导致的错误
- 云游戏学习与实践(二)——安装GamingAnywhere