LeetCode 21. Merge Two Sorted Lists 两个有序列表合成一个

来源:互联网 发布:淘宝宝贝打不开 编辑:程序博客网 时间:2024/05/21 10:22

题目

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Subscribe to see which companies asked this question.

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {        ListNode newList = new ListNode(0);        ListNode move = newList;        while(l1!=null&&l2!=null){        if(l1.val>=l2.val){        ListNode NewNode = new ListNode(l2.val);        move.next = NewNode;        move = move.next;        l2 = l2.next;        }        else{        ListNode NewNode = new ListNode(l1.val);        move.next = NewNode;        move = move.next;        l1 = l1.next;        }        }        if(l1==null){        move.next = l2;        }        if(l2==null){        move.next = l1;        }        return newList.next;    }}

还是锁住链表头部,让后面ListNode移动的问题


比较精简的方法(递归):

public ListNode mergeTwoLists(ListNode l1, ListNode l2){if(l1 == null) return l2;if(l2 == null) return l1;if(l1.val < l2.val){l1.next = mergeTwoLists(l1.next, l2);return l1;} else{l2.next = mergeTwoLists(l1, l2.next);return l2;}}


0 0