剑指offer:合并两个排序的链表

来源:互联网 发布:英语听力软件高中下载 编辑:程序博客网 时间:2024/06/06 14:10

题目描述

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

方法1:递归

【运行时间:22ms  占用内存:8528k】

/*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);        }else{            list=list2;            list.next=Merge(list1,list2.next);        }        return list;    }}

方法2:非递归

【运行时间:21ms  占用内存:8768k】

public class Solution {    public ListNode Merge(ListNode list1,ListNode list2) {        ListNode head=new ListNode(-1);        ListNode node=head;if(list1==null&&list2==null)return null;        if(list1==null)return list2;        if(list2==null)return list1;                while(list1!=null||list2!=null){            int l1=list1==null?Integer.MAX_VALUE:list1.val;            int l2=list2==null?Integer.MAX_VALUE:list2.val;            if(l1<=l2){                node.next=new ListNode(l1);                node=node.next;                if(list1!=null)                list1=list1.next;            }else{                node.next=new ListNode(l2);                node=node.next;                 if(list2!=null)                list2=list2.next;            }        }        return head.next;    }}



原创粉丝点击