Merge Two Sorted List

解法一: 迭代

通过遍历两个链表,比较两者的元素来完成 merge,对于最后剩下的链表,直接把元素添加到链表末尾即可。

/*
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode head = new ListNode(-1); // 任意定义一个表头
        ListNode prev = head; // 定义一个指针,从 head 开始
        while (l1 != null && l2 != null) { // 两者都不为空时才进行遍历
            if (l1.val < l2.val) {
                prev.next = l1; 
                l1 = l1.next; // 下一个数据
            }
            else {
                prev.next = l2;
                l2 = l2.next;
            }
            prev = prev.next; // 指针移动到下一个
        }
        prev.next = l1 == null ? l2 : l1; // 判断哪个链表为空,把非空的链表移动到新链表的末尾。
        return head.next;
    }
}

时间复杂度 O(m + n), 空间复杂度 O(1)

解法二: 递归

???

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!