题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。

1)链表1的头结点的值小于链表2的头结点的值,因此链表1的头结点是合并后链表的头结点。
2)在剩余的结点中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前已经合并好的链表的尾结点链接起来。
代码实现:
public class ListNode{ int val; ListNode next; public ListNode(int val){ this.val=val; this.next=null; } public String toString(){ StringBuilder sb=new StringBuilder(); sb.append("["); ListNode node=this; while(node.next!=null){ sb.append(node.val); sb.append(", "); node=node.next; } sb.append(node.val); sb.append("]"); return sb.toString(); } }
public class Solution{ public static ListNode merge(ListNode node1,ListNode node2){ if(node1==null){ return node2; } if(node2==null){ return node1; } ListNode node=null; if(node1.val>node2.val){ node=node2; node.next=merge(node1,node2.next); }else{ node=node1; node.next=merge(node1.next,node2); } return node; } public static void main(String[] args){ ListNode node1=new ListNode(1); ListNode node2=new ListNode(2); ListNode node3=new ListNode(3); ListNode node4=new ListNode(4); ListNode node5=new ListNode(5); ListNode node6=new ListNode(6); ListNode node7=new ListNode(7); ListNode node8=new ListNode(8); node1.next=node3; node3.next=node5; node5.next=node7; node2.next=node4; node4.next=node6; node6.next=node8; System.out.println(node1.toString()); System.out.println(node2.toString()); ListNode node=merge(node1,node2); if(node!=null){ System.out.println(node.toString()); } } }
posted on
浙公网安备 33010602011771号