【剑指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;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章