【剑指offer】-合并两个排序的链表-16/67

简介: 【剑指offer】-合并两个排序的链表-16/67

1. 题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

2. 题目分析

  1. 考虑两个链表是否为null,如果是null的话,返回另一个链表
  2. 设置两个结点:p1、p2分别指向list1、list2,创建一个空链表list3,并设置p3结点指向list3
  3. 分别遍历两个链表并比较,得出最后
  4. 注意:返回的是list3.next。因为此时p3开始的值为原始的值

3. 题目代码

public class Solution {
  public ListNode Merge(ListNode list1, ListNode list2) {
    if (list1 == null) {
      return list2;
    }
    if (list2 == null) {
      return list1;
    }
    ListNode p1 = list1;
    ListNode p2 = list2;
    ListNode list3 = new ListNode(1);
    ListNode p3 = list3;
    while (p1 != null || p2 != null) {
      if (p1 == null) {
        p3.next = p2;
        p3 = p2;
        p2 = p2.next;
      } else if (p2 == null) {
        p3.next = p1;
        p3 = p1;
        p1 = p1.next;
      } else if (p1.val > p2.val) {
        p3.next = p2;
        p3 = p2;
        p2 = p2.next;
      } else {
        p3.next = p1;
        p3 = p1;
        p1 = p1.next;
      }
    }
    return list3.next;
  }
}


相关文章
|
14天前
|
存储 人工智能 测试技术
每日练习之排序——链表的合并;完全背包—— 兑换零钱
每日练习之排序——链表的合并;完全背包—— 兑换零钱
14 2
|
30天前
23. 合并 K 个升序链表
23. 合并 K 个升序链表
33 3
|
7天前
23.合并K个升序链表
23.合并K个升序链表
|
11天前
|
存储 SQL 算法
LeetCode 83题:删除排序链表中的重复元素【面试】
LeetCode 83题:删除排序链表中的重复元素【面试】
|
11天前
|
存储 SQL 算法
LeetCode 题目 82:删除排序链表中的重复元素 II
LeetCode 题目 82:删除排序链表中的重复元素 II
|
12天前
|
存储 算法 数据挖掘
Leetcode二十三题:合并K个升序链表【22/1000 python】
Leetcode二十三题:合并K个升序链表【22/1000 python】
|
25天前
|
索引
【力扣刷题】回文链表、环形链表、合并两个有序链表
【力扣刷题】回文链表、环形链表、合并两个有序链表
20 0
|
30天前
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
|
1月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
11天前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表