题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
提示:
- 两个链表的节点数目范围是
[0, 50]
-100 <= Node.val <= 100
l1
和l2
均按 非递减顺序 排列
Python:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def mergeTwoLists(self, list1, list2):
#声明形参的类型
"""
:type list1: Optional[ListNode]
:type list2: Optional[ListNode]
:rtype: Optional[ListNode]
"""
# 创建一个头点
res = ListNode(None)
node = res
# l1和l2非空无限循环
while list1 and list2:
# 将较小的数接在新链表最后,被接的链表指针向后移一位
if list1.val < list2.val:
node.next,list1 = list1,list1.next
else:
node.next,list2 = list2,list2.next
# 新链表每次接完新数指针向后移一位
node = node.next
#当一个链表为空时,连接另一个链表剩下的数
if list1:
node.next = list1
else:
node.next = list2
return res.next
java:
class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
public class solutionTwentyone {
public static void main(String[] args) {
}
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode listNode = new ListNode();
ListNode newList = listNode;
while(list1 != null && list2 != null){
if(list1.val < list2.val){
newList.next = list1;
list1 = list1.next;
}else{
newList.next = list2;
list2 = list2.next;
}
newList = newList.next;
}
if (list1 != null){
newList.next = list1;
}else {
newList.next = list2;
}
return listNode.next;
}
}