zoukankan      html  css  js  c++  java
  • LeetCoded第21题题解--合并两个有序链表

    21. 合并两个有序链表

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
    示例:
    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    题解

    思路一:暴力解法
    创建一个head节点创建一个新的链表,并创建一个end节点指向最后一个节点,比较两个升序链表值将end节点指向值较小节点,以此类推。

    public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode head = new ListNode(-1);
            ListNode end = head;
            while (l1!=null&&l2!=null){
                if (l1.val<=l2.val){
                    end.next = l1;
                    l1 = l1.next;
                }else {
                    end.next = l2;
                    l2 = l2.next;
                }
                end = end.next;
            }
            end.next = l1==null?l2:l1;
            return head.next;
        }
    

    思路二:递归解法
    升序节点中值较小的节点的next与另一个节点再次merge为空则结束

    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;
            }
        }
    
  • 相关阅读:
    mock.js
    v-bind和v-model的区别
    if语句中的return
    js中全局变量和局部变量以及变量声明提升
    js中全局和局部变量的区别
    相对路径、绝对路径
    commonJs
    B/S与C/S
    background-origin
    DOM
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232497.html
Copyright © 2011-2022 走看看