题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
这道题的思路
暴力解法:
public ListNode mergeTwoLists(ListNode l1,ListNode l2){
ListNode dummy = new ListNode(0);
ListNode cur = dummy;
//当l1和l2不为空时
while (l1 != null && l2 != null){
if(l1.val < l2.val){
cur.next = l1;
cur = cur.next;
l1= l1.next;
}else{
cur.next = l2;
cur = cur.next;
l2= l2.next;
}
}
//l1为空
while(l1 != null){
cur.next = l1;
cur = cur.next;
l1= l1.next;
}
//l2为空
while(l2 != null){
cur.next = l2;
cur = cur.next;
l2= l2.next;
}
return dummy.next;
}
测试:
//主函数
public class linkedTest {
public static void main(String[] args) {
ListNode node = new ListNode(1);
node.next = new ListNode(2);
node.next.next = new ListNode(3);
ListNode node1 = new ListNode(1);
node1.next = new ListNode(4);
node1.next.next = new ListNode(5);
linkedTest linkedTest = new linkedTest();
ListNode ld = linkedTest.mergeTwoLists(node, node1);
System.out.println(ld);
}
//链表结点
public class ListNode{
int val;
ListNode next;
public ListNode(int val){
this.val = val;
}
public ListNode(int val ,ListNode next){
this.val = val;
this.next = next;
}
@Override
public String toString() {
return "ListNode{" +
"val=" + val +
", next=" + next +
'}';
}
}