LeetCode - 21. Merge Two Sorted Lists

简介: 21. Merge Two Sorted Lists  Problem's Link  ---------------------------------------------------------------------------- Mean:  将两个非递减排列的链表合并成一个链表,所得链表依然按照非递减顺序排列.

21. Merge Two Sorted Lists 

Problem's Link

 ----------------------------------------------------------------------------

Mean: 

将两个非递减排列的链表合并成一个链表,所得链表依然按照非递减顺序排列.

analyse:

链表的基本操作.

Time complexity: O(N)

 

view code

/**
* -----------------------------------------------------------------
* Copyright (c) 2016 crazyacking.All rights headerved.
* -----------------------------------------------------------------
*       Author: crazyacking
*       Date  : 2016-02-17-16.50
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long( LL);
typedef unsigned long long( ULL);
const double eps( 1e-8);

//  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)
    {
        ListNode * res = NULL , * head = NULL;
        bool isFirst = true;
        while( l1 && l2)
        {
            if( l1 -> val < l2 -> val)
            {
                if( isFirst)
                {
                    head = new ListNode( l1 -> val);
                    res = head;
                    isFirst = false;
                }
                else
                {
                    head -> next = new ListNode( l1 -> val);
                    head = head -> next;
                }
                l1 = l1 -> next;
            }
            else
            {
                if( isFirst)
                {
                    head = new ListNode( l2 -> val);
                    res = head;
                    isFirst = false;
                }
                else
                {
                    head -> next = new ListNode( l2 -> val);
                    head = head -> next;
                }
                l2 = l2 -> next;
            }
        }

        while( l1)
        {
            if( isFirst)
            {
                head = new ListNode( l1 -> val);
                res = head;
                isFirst = false;
            }
            else
            {
                head -> next = new ListNode( l1 -> val);
                head = head -> next;
            }
            l1 = l1 -> next;
        }
        while( l2)
        {
            if( isFirst)
            {
                head = new ListNode( l2 -> val);
                res = head;
                isFirst = false;
            }
            else
            {
                head -> next = new ListNode( l2 -> val);
                head = head -> next;
            }
            l2 = l2 -> next;
        }
        return res;
    }
};

int main()
{

    return 0;
}
/*

*/

 

目录
相关文章
|
存储 缓存 算法
LeetCode刷题---Two Sum(一)
LeetCode刷题---Two Sum(一)
Leetcode 4. Median of Two Sorted Arrays
题目描述很简单,就是找到两个有序数组合并后的中位数,要求时间复杂度O(log (m+n))。 如果不要去时间复杂度,很容易就想到了归并排序,归并排序的时间复杂度是O(m+n),空间复杂度也是O(m+n),不满足题目要求,其实我开始也不知道怎么做,后来看了别人的博客才知道有个二分法求两个有序数组中第k大数的方法。
41 0
Leetcode Find Minimum in Rotated Sorted Array 题解
对一个有序数组翻转, 就是随机取前K个数,移动到数组的后面,然后让你找出最小的那个数,注意,K有可能是0,也就是没有翻转。
49 0
|
存储 C++ Python
LeetCode刷题---Add Two Numbers(一)
LeetCode刷题---Add Two Numbers(一)
|
存储 算法 安全
LeetCode - #2 Add Two Numbers
我们社区从本期开始会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。
LeetCode - #2 Add Two Numbers
|
存储 算法 安全
LeetCode - #1 Two Sum
我们社区从本期开始会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。
LeetCode - #1 Two Sum
LeetCode 167 Two Sum II - Input array is sorted(输入已排序数组,求其中两个数的和等于给定的数)
给定一个有序数组和一个目标值 找出数组中两个成员,两者之和为目标值,并顺序输出
88 0
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
59 6
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
121 2