• 0021. Merge Two Sorted Lists (E)


    Merge Two Sorted Lists (E)

    题目

    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.

    Example:

    Input: 1->2->4, 1->3->4
    Output: 1->1->2->3->4->4
    

    题意

    将两个有序链表合并为一个有序链表。

    思路

    归并排序。


    代码实现

    Java

    迭代

    class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode head = new ListNode(0);
            ListNode pointer = head;
            while (l1 != null && l2 != null) {
                if (l1.val < l2.val) {
                    pointer.next = l1;
                    l1 = l1.next;
                } else {
                    pointer.next = l2;
                    l2 = l2.next;
                }
                pointer = pointer.next;
            }
            if (l1 == null) {
                pointer.next = l2;
            }
            if (l2 == null) {
                pointer.next = l1;
            }
            return head.next;
        }
    }
    

    递归

    class Solution {
        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;
            }
        }
    }
    

    JavaScript

    /**
     * Definition for singly-linked list.
     * function ListNode(val, next) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.next = (next===undefined ? null : next)
     * }
     */
    /**
     * @param {ListNode} l1
     * @param {ListNode} l2
     * @return {ListNode}
     */
    var mergeTwoLists = function (l1, l2) {
      let dummy = new ListNode(0)
      let cur = dummy
      while (l1 !== null && l2 !== null) {
        if (l1.val < l2.val) {
          cur.next = l1
          l1 = l1.next
        } else {
          cur.next = l2
          l2 = l2.next
        }
        cur = cur.next
      }
      cur.next = l1 ? l1 : l2
      return dummy.next
    }
    
  • 相关阅读:
    PE格式详细讲解10 系统篇10|解密系列
    复杂的数据类型1 C++快速入门07
    复杂的数据类型2 C++快速入门08
    复杂的数据类型2 C++快速入门08
    复杂的数据类型1 C++快速入门07
    PE格式详细讲解10 系统篇10|解密系列
    Win32基础知识1 Win32汇编语言002
    开题篇 Win32汇编语言001
    开题篇 Win32汇编语言001
    Win32基础知识1 Win32汇编语言002
  • 原文地址:https://www.cnblogs.com/mapoos/p/13171280.html
Copyright © 2020-2023  润新知