首页 > 其他 > 详细

LeetCode 21. 合并两个有序链表

时间:2020-05-06 23:13:50      阅读:55      评论:0      收藏:0      [点我收藏+]
package 链表;

/**
 * https://leetcode-cn.com/problems/merge-two-sorted-lists/
 * 21. 合并两个有序链表
 *
 */
public class _21_Merge_Two_Sorted_Lists {

    class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    class Solution {
        // 归并法
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            // 存放新链表
            ListNode dummy = new ListNode(-1);
            // 新链表的指针
            ListNode dummyHelper = dummy;

            while (l1 != null && l2 != null) {
                if (l1.val <= l2.val) {
                    dummyHelper.next = l1;
                    l1 = l1.next;
                    dummyHelper = dummyHelper.next;
                } else {
                    dummyHelper.next = l2;
                    l2 = l2.next;
                    dummyHelper = dummyHelper.next;
                }
            }
            dummyHelper.next = (l1 == null) ? l2 : l1;
            return dummy.next;
        }


        // 递归
        // 定义:定义个递归函数f(l1, l2),返回合并后的新链表
        // 出口:l1 == null, l2 == null, 分别是l2, l1
        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;
            }
        }
    }
}


LeetCode 21. 合并两个有序链表

原文:https://www.cnblogs.com/jianzha/p/12837568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!