当前位置: 首页 > news >正文

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 together the nodes of the first two lists.


就是把两个已经排序的链表进行合并。


思路:
将链表l2合并到l1中,逐个遍历l2
如果l1不是最后一个:
l1<=l2 && l2 <= l1.next  :移除l2,将l2放在l1.next
l2 < l1 : 将l2.next=l1 并替换头结点
else: l1=l1.next
如果l1是最后结点:
l2 > l1:l1.next = l2
else : 将l2.next = l1并替换头结点




实现代码:


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode MergeTwoLists(ListNode l1, ListNode l2) {
    	if(l1 == null){
		return l2;
	}
	if(l2 == null){
		return l1;
	}
	
	// merge l2 into l1
	ListNode head = l1;
	while(l2 != null){
		if(l1.next != null){
			if(l2.val >= l1.val && l2.val <= l1.next.val){
				var t = Remove(ref l2);
				t.next = l1.next;
				l1.next = t;
			}
			else if(l2.val < l1.val){
				var t = Remove(ref l2);
				t.next = l1;
				
				head = t;
				l1 = t;
			}
			else{
				l1 = l1.next;
			}
		}
		else{
			if(l1.val < l2.val){
				l1.next = Remove(ref l2);
			}
			else{
				var t = Remove(ref l2);
				t.next = l1;
				
				head = t;
				l1 = t;
			}
		}
		
	}
	
	return head;
    }
    
    private ListNode Remove(ref ListNode n)
    {
        
    	ListNode t = new ListNode(n.val);
    	if(n.next == null){
    		n = null;
    	}
    	else{
    		n.val = n.next.val;
    		n.next = n.next.next;
    	}
    	return t;
    }


}


相关文章:

  • 汇编语言程序设计的基本方法
  • LeetCode -- Binary Tree Zigzag Level Order Traversal
  • PostgreSQL+PostGIS的使用 1
  • LeetCode -- Compare Version Numbers
  • LeetCode -- Implement Queue using Stacks
  • PostgreSQL+PostGIS的使用 2
  • 有关微软技术方向的最新学习资源【2015-9月】
  • PostgreSQL+PostGIS的使用 3
  • PostgreSQL+PostGIS的使用 4
  • LeetCode -- Longest Substring Without Repeating Characters
  • PostgreSQL+PostGIS的使用 5
  • LeetCode -- Implement strStr()
  • TR069协议格式化签名数据包(一)
  • LeetCode -- Add Digits
  • 深度介绍Linux内核是如何工作的
  • ES6指北【2】—— 箭头函数
  • 【5+】跨webview多页面 触发事件(二)
  • Android开源项目规范总结
  • Android框架之Volley
  • C# 免费离线人脸识别 2.0 Demo
  • JavaScript 基础知识 - 入门篇(一)
  • leetcode98. Validate Binary Search Tree
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Python爬虫--- 1.3 BS4库的解析器
  • Redux 中间件分析
  • Vue 重置组件到初始状态
  • Vue--数据传输
  • 闭包,sync使用细节
  • 产品三维模型在线预览
  • 程序员该如何有效的找工作?
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 规范化安全开发 KOA 手脚架
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 算法-图和图算法
  • 为视图添加丝滑的水波纹
  • 问题之ssh中Host key verification failed的解决
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序开发中的那些坑
  • Java总结 - String - 这篇请使劲喷我
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 飞书APP集成平台-数字化落地
  • ###STL(标准模板库)
  • #1014 : Trie树
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (1)Nginx简介和安装教程
  • (10)ATF MMU转换表
  • (16)Reactor的测试——响应式Spring的道法术器
  • (BFS)hdoj2377-Bus Pass
  • (C++17) std算法之执行策略 execution
  • (备忘)Java Map 遍历