合并两个排序的链表

来源:互联网 发布:qq飞车锐速数据 编辑:程序博客网 时间:2024/05/17 08:01

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

解:

1.递归

public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}public class Solution {     public ListNode Merge(ListNode list1, ListNode list2) {         if(list1 == null){             return list2;         }else if(list2 == null){             return list1;         }         ListNode list = null;         if(list1.val <= list2.val){             list = list1;             list.next = Merge(list1.next,list2);         }         if(list2.val < list1.val){             list = list2;             list.next = Merge(list1,list2.next);         }         return list;     }}
2.循环
public class Solution {    public ListNode Merge(ListNode list1,ListNode list2) {        //新建一个头节点,用来存合并的链表。        ListNode head=new ListNode(-1);        head.next=null;        ListNode root=head;        while(list1!=null&&list2!=null){            if(list1.val<list2.val){                head.next=list1;                head=list1;                list1=list1.next;            }else{                head.next=list2;                head=list2;                list2=list2.next;            }        }        //把未结束的链表连接到合并后的链表尾部        if(list1!=null){            head.next=list1;        }        if(list2!=null){            head.next=list2;        }        return root.next;    }}






0 0
原创粉丝点击