题解 | #合并两个排序的链表#
合并两个排序的链表
http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
Java代码实现:
例如:
输入:1->2->4, 1->3->5
输出:1->1->2->3->4->5
输出:1->1->2->3->4->5
算法思想:因为原来的链表就是有序的,所以我们可以直接遍历,然后依次进行比较,较小的先连接到新链表中
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0); // 创建一个新节点作为新链表的头结点
ListNode temp = head; // 因为头结点不能动,所以创建临时结点指向头结点
// 遍历两个链表的时候需要进行合法性校验
while(l1 != null && l2 != null){
if(l1.val < l2.val){
temp.next = l1;
l1 = l1.next;
} else {
temp.next = l2;
l2 = l2.next;
}
temp = temp.next; //连接好数据以后就往后移动
}
temp.next = l1 != null?l1:l2; //使用三目运算符对末尾元素进行连接
return head.next;
}
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0); // 创建一个新节点作为新链表的头结点
ListNode temp = head; // 因为头结点不能动,所以创建临时结点指向头结点
// 遍历两个链表的时候需要进行合法性校验
while(l1 != null && l2 != null){
if(l1.val < l2.val){
temp.next = l1;
l1 = l1.next;
} else {
temp.next = l2;
l2 = l2.next;
}
temp = temp.next; //连接好数据以后就往后移动
}
temp.next = l1 != null?l1:l2; //使用三目运算符对末尾元素进行连接
return head.next;
}
}