题目链接:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
算法思想:
定义一个虚拟头节点newHead,用来记录合并之后的有序链表,定义两个指针list1和list2分别用来遍历两个链表,比较两个指针指向的节点的val值,将较小值的节点加入到定义的有序链表中,当两个指针有一个为空时退出循环,此时还需要判断是否存在一个链表不为空,如果是将该链表剩下的所有节点都加入到新链表中
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode newHead = new ListNode();
ListNode cur = newHead;
while(list1 != null && list2 != null) {
if(list1.val <= list2.val) {
cur.next = list1;
cur = list1;
list1 = list1.next;
} else {
cur.next = list2;
cur = list2;
list2 = list2.next;
}
}
if(list1 != null) {
cur.next = list1;
}
if(list2 != null) {
cur.next = list2;
}
return newHead.next;
}