->4->4,return 1->2->3->4->5->6.

思路:

(1)题意为将两个有序链表合成一个有序链表。

(2)首先,分别对链表头结点判空,如果都为空,返回null;若L1为空,L2不为空,返回L1;如果L1为空,L2不为空,返回L2。

(2)其次,设置节点p为结果链表头结点,设置标志节点q指向结果链表尾部节点。

(3)再次,循环对待合并链表中的节点遍历,如果节点L1和L2都不为空,则比较其节点值,如果L1<L2,(第一次需要初始化p和q的值,p=L1,

q=p),将标志节点指向节点L1,标志节点后移,L1指向其后续节点,L1>=L2情况类似,直到循环结束。

(4)最后,需要判断未进行比较的节点,将这些节点追加为q的后续节点,返回p即为结果。

(5)其比较过程简单如下所示:

例如: L1: 1->3->5->13  L2: 2->4->14->17

(A)L1=1,L2=2,L1<L2,初始p=L1=1,q=p=1,L1=L1.next=3;

(B)L1=3,L2=2,L1>L2,此时,q.next=L2=2,q=q.next=2,L2=L2.next=4;

(C)L1=3,L2=4,L1<L2,此时,q.next=L1=3,q=q.next=3,L1=L1.next=5;

(D)L1=5,L2=4,L1>L2,此时,q.next=L2=4,q=q.next=4,L2=L2.next=14;

(E)L1=5,L2=14,L1<L2,此时,q.next=L1=5,q=q.next=5,L1=L1.next=13;

(F)L1=13,L2=14,L1<L2,此时,q.next=L1=13,q=q.next=13,L1=L1.next=null;

(G)由于L1为空,此时需将L2中后续节点追加到q后面即可。

算法代码实现如下所示:

public ListNode mergeTwoLists(ListNode L1, ListNode L2) {
	if (L1 == null && L2 == null  return null;
	if (L1 == null && L2 != null) return L2;
	if (L1 != null && L2 == null) return L1;

	ListNode p = null;
	ListNode q = p;
	while (L1 != null && L2 != null) {
		if (L1.val < L2.val) {
			if (p == null) {
				p = L1;
				q = p;
				L1 = L1.next;
				continue;
			}
			q.next = L1;
			q = q.next;
			L1 = L1.next;
		} else {
			if (p == null) {
				p = L2;
				q = p;
				L2 = L2.next;
				continue;
			}
			q.next = L2;
			q = q.next;
			L2 = L2.next;
		}
	}

	while (L1 != null) {
		q.next = L1;
		q = q.next;
		L1 = L1.next;
	}

	while (L2 != null) {
		q.next = L2;
		q = q.next;
		L2 = L2.next;
	}

	return p;
}

Leetcode_21_Merge Two Sorted Lists的更多相关文章

  1. [LeetCode] Merge k Sorted Lists 合并k个有序链表

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...

  2. [LeetCode] Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  3. [LintCode] Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list sh ...

  4. No.023:Merge k Sorted Lists

    问题: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...

  5. Merge k Sorted Lists

    1. Merge Two Sorted Lists 我们先来看这个 问题: Merge two sorted linked lists and return it as a new list. The ...

  6. 71. Merge k Sorted Lists

    Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...

  7. 【leetcode】Merge k Sorted Lists

    Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...

  8. Merge Two Sorted Lists

    Merge Two Sorted Lists https://leetcode.com/problems/merge-two-sorted-lists/ Merge two sorted linked ...

  9. Java for LeetCode 023 Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解 ...

随机推荐

  1. Python学习---字符串处理

    This world is but a canvas to our imagination. 世界只是我们的想象的画布. ----Apri 22 ''' 题目内容: "Pig Latin&q ...

  2. C#利用Attribute实现简易AOP介绍

    首先看一段简单的代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } //来自UI层的调用 ...

  3. Emacs Python 自动补全--Elpy

    安装方法: 首先,安装一些依赖包: # Either of these pip install rope pip install jedi # flake8 用来检查语法错误 pip install ...

  4. windows资源管理器中配置右键bash here

    windows下安装了git后有git bash here 但是安装了cygwin没有bash here 我们可以通过修改注册表的方式自己做一个 Win10下在注册表内有一般有两个默认的 cmd 和 ...

  5. ACM 还是畅通工程

    Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直 ...

  6. Bootstrap3 表格-基本表格

    为任意 <table> 标签添加 .table 类可以为其赋予基本的样式 - 少量的内补(padding)和水平方向的分隔线.这种方式看起来很多余!?但是我们觉得,表格元素使用的很广泛,如 ...

  7. Android碎裂的粒子效果

    最近看到一段时间都没怎么更新文章了,一直在学习iOS相关内容.偶然间看到一个碎裂的粒子效果,觉得很有意思,就查了查,参考下网上的思路自己撸了个轮子. 好了,说了这么多,先看看效果吧~ 依惯例,先说下行 ...

  8. SpringBatch简介

    spring Batch是一个轻量级的.完善的批处理框架,旨在帮助企业建立健壮.高效的批处理应用.SpringBatch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使 ...

  9. SQL实例整理

    本文适合将w3school的SQL教程(http://www.w3school.com.cn/sql/sql_create_table.asp)都基本看过一遍的猿友阅读. 说说博主的情况吧.毕业找工作 ...

  10. CentOS7下安装GitLab

    三步在CentOS7系统下,完成GitLab的安装. 1.安装和配置必须的依赖 sudo yum install curl policycoreutils openssh-server openssh ...