[leetcode] 17. Merge Two Sorted Lists

这个非常简单的题目,题目如下:

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

就是算导里面的第一个算法讲解,但是我的C++水平实在太渣,所以对于链表的操作很蠢,但还好完成了。题解如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
	ListNode *mergeTwoLists(ListNode *l1, ListNode *l2)
	{
		if (l1 == NULL && l2 == NULL)
		{
			return NULL;
		}

		if (l1 == NULL || l2 == NULL)
		{
			return (l1 == NULL) ? (l2) : (l1);
		}
		ListNode *aspros, *deferos, *root;
		aspros = deferos = new ListNode(0);
		if (l1->val <= l2->val)
		{
			aspros->val = l1->val;
			aspros->next = NULL;
			l1 = l1->next;
		}
		else
		{
			aspros->val = l2->val;
			aspros->next = NULL;
			l2 = l2->next;
		}
		root = aspros;

		while (l1 && l2)
		{
			if (l1->val <= l2->val)
			{
				aspros = new ListNode(0);
				aspros->val = l1->val;
				aspros->next = NULL;
				deferos->next = aspros;
				deferos = aspros;
				l1 = l1->next;
			}
			else
			{
				aspros = new ListNode(0);
				aspros->val = l2->val;
				aspros->next = NULL;
				deferos->next = aspros;
				deferos = aspros;
				l2 = l2->next;
			}
		}

		while (l1)
		{
			aspros = new ListNode(0);
			aspros->val = l1->val;
			aspros->next = NULL;
			deferos->next = aspros;
			deferos = aspros;
			l1 = l1->next;
		}

		while (l2)
		{
			aspros = new ListNode(0);
			aspros->val = l2->val;
			aspros->next = NULL;
			deferos->next = aspros;
			deferos = aspros;
			l2 = l2->next;
		}

		return root;
	}
};

这个就是因为我不会初始化链表,所以在一开始的地方非常蠢,作了两个判断,一个是l1与l2都为NULL的情况,另一个是它俩有一个是空的情况,可以直接弹出,接着就是合并了。

时间: 2024-08-07 03:42:11

[leetcode] 17. Merge Two Sorted Lists的相关文章

LeetCode:Merge Two Sorted Lists - 拼接两个有序链表

1.题目名称 Merge Two Sorted Lists(按升序拼接两个有序链表) 2.题目地址 https://leetcode.com/problems/merge-two-sorted-lists/ 3.题目内容 英文:Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two l

[LeetCode 题解]: Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题意:对k个有序的链表进行归并排序.并分析其复杂度. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(N

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. 解题思路一: 之前我们有mergeTwoLists(ListNode l1, ListNode l2)方法,直接调用的话,需要k-1次调用,每次调用都需要产生一个ListNode[],空间开销很大.如果采用分治的思想,对相邻的两个ListNode进行mergeTwoLists,每次将规模减少一半,直到

[LeetCode] 023. Merge k Sorted Lists (Hard) (C++/Python)

索引:[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql) Github: https://github.com/illuz/leetcode 023. Merge k Sorted Lists (Hard) 链接: 题目:https://oj.leetcode.com/problems/merge-k-sorted-lists/ 代码(github):https://github.com/illuz/leetcode 题意: 和 021. Merge T

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

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 与21. Merge Two Sorted Lists的拓展,这道题要合并k个有序链表,还是可以两两合并. 类似题目: [LeetCode] 21. Merge Two Sorted Lists 合并有序链表 原文地址:https://www.cnblogs.com/lightwindy/p/8512

[LeetCode]21 Merge Two Sorted Lists 合并两个有序链表

---恢复内容开始--- [LeetCode]21 Merge Two Sorted Lists 合并两个有序链表 Description Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example Example: Input: 1->2->4, 1-&g

[LeetCode][JavaScript]Merge k Sorted Lists

https://leetcode.com/submissions/detail/28015840/ Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 直接使用了“Merge Two Sorted Lists”里写的方法. http://www.cnblogs.com/Liok3187/p/4514347.ht

【leetcode】Merge k Sorted Lists

Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 采用优先队列priority_queue 把ListNode放入优先队列中,弹出最小指后,如果该ListNode有下一个元素,则把下一个元素放入到队列中 1 /** 2 * Definition for singly-linked list. 3 * stru

[LeetCode]148.Merge Two Sorted Lists

[题目] Sort a linked list in O(n log n) time using constant space complexity. [分析] 单链表适合用归并排序,双向链表适合用快速排序.本题可以复用Merge Two Sorted Lists方法 [代码] /********************************* * 日期:2015-01-12 * 作者:SJF0115 * 题目: 148.Merge Two Sorted Lists * 来源:https://