LeetCode_Linked List_Merge Two Sorted Lists

来源:互联网 发布:mysql修改数据 编辑:程序博客网 时间:2024/06/16 03:31

21.Merge Two Sorted Lists

题目


1. 问题描述:

合并两个有序链表,并返回一个新的有序链表。

2. 解决思路:

这道题很简单。可以用递归求解,也可以用非递归求解;注意:如果用非递归求解,发现新链表的头结点不确定,所以引入dummy节点。不多说之间上代码。

3. java代码:

/** * 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 ret = null;        if(l1 == null)             return l2;        if(l2 == null)            return l1;        if(l1.val > l2.val){            ret = l2;            ret.next = mergeTwoLists(l2.next,l1);        } else {            ret = l1;            ret.next = mergeTwoLists(l1.next,l2);        }        return ret;*/        /* 除了dummy节点外还引入一个lastNode节点充当下一次合并时的头节点。在l1或者l2的某一个节点为空指针NULL时,退出while循环,并将非空链表的头部链接到lastNode->next中。*/        ListNode dummy = new ListNode(0);        ListNode lastNode = dummy;        while((l1!=null) && (l2!=null)){            if(l2.val > l1.val){                lastNode.next = l1;                l1 = l1.next;            } else {                lastNode.next = l2;                l2 = l2.next;            }            lastNode = lastNode.next;        }        lastNode.next = (l1!=null)?l1:l2;        return dummy.next;     }}

4. 算法评估:

这里写图片描述


希望大家多多指正交流!

0 0
原创粉丝点击