欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java,LeetCode 21. 合并两个有序链表

程序员文章站 2022-04-19 13:23:40
链表合并两个有序链表1. 题目描述难易度:简单将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists2. 思路分析遍历两个链表,每次取到两个结点的值进行比较创建新...

链表

合并两个有序链表

1. 题目描述

难易度:简单

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists

2. 思路分析

  • 遍历两个链表,每次取到两个结点的值进行比较
  • 创建新的节点,值为取到的两个结点中值较小的结点
  • 将创建的结点加入到结果中

3. 代码演示

/**
 * @Description: TODO
 * @Author YunShuaiWei
 * @Date 2020/7/5 19:43
 * @Version
 **/
public class Solution {

    private ListNode res = null;
    private ListNode cur = res;

    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) {
            return l2;
        }
        if (l2 == null) {
            return l1;
        }
        //利用两个临时变量node1和node2来遍历链表
        ListNode node1 = l1;
        ListNode node2 = l2;
        while (node1 != null && node2 != null) {
            //l1中val<l2中的val
            if (node1.val < node2.val) {
                //创建新的节点,并链接到res的next域
                if (res == null) {
                    res = new ListNode(node1.val);
                    cur = res;
                } else {
                    cur.next = new ListNode(node1.val);
                    cur = cur.next;
                }
                node1 = node1.next;
            } else {
                if (res == null) {
                    res = new ListNode(node2.val);
                    cur = res;
                } else {
                    cur.next = new ListNode(node2.val);
                    cur = cur.next;
                }
                node2 = node2.next;
            }
        }
        if (node1 == null) {
            cur.next = node2;
        } else {
            cur.next = node1;
        }
        return res;
    }
}

class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

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

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

Java,LeetCode 21. 合并两个有序链表

本文地址:https://blog.csdn.net/qq_40613029/article/details/107144680