我是靠谱客的博主 傻傻万宝路,最近开发中收集的这篇文章主要介绍2021.09.22 - 074.合并两个有序链表1. 题目2. 思路3. 代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 1. 题目
  • 2. 思路
    • (1) 迭代
    • (2) 递归
  • 3. 代码

1. 题目

在这里插入图片描述

2. 思路

(1) 迭代

  • 首先创建一个伪头结点,然后依次加入l1和l2中较小的结点,最后返回伪头结点的next即可。

(2) 递归

  • 终止条件是若某个链表为空,则新链表的尾结点指向另一个链表。
  • 核心思想是令两个链表中的较小头结点指向从后向前已排好序的链表。

3. 代码

public class Test {
    public static void main(String[] args) {
    }
}

class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

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

class Solution1 {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) {
            return l2;
        } else if (l2 == null) {
            return l1;
        } else if (l1.val < l2.val) {
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        } else {
            l2.next = mergeTwoLists(l1, l2.next);
            return l2;
        }
    }
}

最后

以上就是傻傻万宝路为你收集整理的2021.09.22 - 074.合并两个有序链表1. 题目2. 思路3. 代码的全部内容,希望文章能够帮你解决2021.09.22 - 074.合并两个有序链表1. 题目2. 思路3. 代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部