zoukankan      html  css  js  c++  java
  • 21. 合并两个有序链表

    题目

    代码

    /**
     * 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* root = nullptr, *ptr = nullptr;
            //小的先加入链表
    		while (l1 != nullptr&&l2 != nullptr)
    		{
    			if (l1->val > l2->val)
    			{
    				if (root == nullptr)
    				{
    					root = l2;
    					ptr = root;
    				}
    				else {
    					root->next = l2;
    					root = root->next;
    
    				}
    				l2 = l2->next;
    
    
    			}
    			else
    			{
    				if (root == nullptr)
    				{
    					root = l1;
    					ptr = root;
    				}
    				else {
    					root->next = l1;
    					root = root->next;
    
    				}
    				l1 = l1->next;
    			}
    
    		}
            //如果l1还有元素存在
    		while (l1 != nullptr)
    		{
    			if (root == nullptr)
    			{
    				root = l1;
    				ptr = root;
    			}
    			else
    			{
    				root->next = l1;
    				root = root->next;
    			}
    
    			l1 = l1->next;
    		}
            //如果l2还有元素存在
    		while (l2 != nullptr)
    		{
    			if (root == nullptr)
    			{
    				root = l2;
    				ptr = root;
    			}
    			else
    			{
    				root->next = l2;
    				root = root->next;
    			}
    
    			l2 = l2->next;
    		}
    		return ptr;
    
    	}
    };
    
    

    思路

    先同时遍历两个链表,小的先加入新链表中,最后判断l1或者l2是否还有剩余元素,有的话全部再加入新链表。方法时间复杂度O(m+n),空间复杂度O(1)

    https://github.com/li-zheng-hao
  • 相关阅读:
    关于冲动 CQ
    关于在虚拟机上使用boost库 CQ
    新项目奖金分配方案 CQ
    关于桌子 CQ
    linux 添加本地yum源
    linux samba 服务器 简单配置
    linux 修改密码
    linux ntp 服务器和用户端
    linux 修改ip 地址
    Union 和 Union All 的区别
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053632.html
Copyright © 2011-2022 走看看