博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
21. Merge Two Sorted Lists
阅读量:4562 次
发布时间:2019-06-08

本文共 1583 字,大约阅读时间需要 5 分钟。

题目:将两个有序链表合并为一个新链表。该新链表必须是之前两个链表的节点合并而成。

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:

Input: 1->2->4, 1->3->4Output: 1->1->2->3->4->4
的做法
采用递归的方法,思路简洁,实现简单,每次比较返回较小值
public class Solution {    public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null){ return l2; } if(l2 == null){ return l1; } ListNode mergeHead; if(l1.val < l2.val){ mergeHead = l1; mergeHead.next = mergeTwoLists(l1.next, l2); } else{ mergeHead = l2; mergeHead.next = mergeTwoLists(l1, l2.next); } return mergeHead; } } 我的做法(实现复杂,提交了三次才通过)

class Solution {

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode maxPointer = l1;
ListNode minPointer = l2;
ListNode maxHead = l1;
ListNode minHead = l2;
if (minPointer == null)
return maxPointer;
if (maxPointer == null)
return minPointer;
if (l1.val <= l2.val) {
minPointer = l1;
maxPointer = l2;
maxHead = l2;
minHead = l1;
}

ListNode head = minHead;

while (minPointer != null && maxPointer != null) {
while ((minPointer.next != null) && (minPointer.next.val > maxPointer.val)) {
maxHead = maxPointer.next;
minHead = minPointer.next;

minPointer.next = maxPointer;

maxPointer.next = minHead;
minPointer = maxPointer;
if (maxHead != null)
maxPointer = maxHead;
else
return head;
}
if (minPointer.next != null)
minPointer = minPointer.next;
else
while (maxPointer != null) {
minPointer.next = maxPointer;
minPointer = minPointer.next;
maxPointer = maxPointer.next;
}

}

return head;

}
}

 

转载于:https://www.cnblogs.com/mafang/p/8649076.html

你可能感兴趣的文章
Stopwatch运行时间 Parallel并行任务
查看>>
angular 事件绑定
查看>>
干货型up主
查看>>
线程池
查看>>
需求:打印九九乘法表
查看>>
5 OK6410裸机调试(不用Jlink)
查看>>
今天实现一个T-sql的小编程,分享给大家,看看就好~(列值赋值)
查看>>
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>
教你用shell写CGI程序
查看>>
窗口 对话框 Pop Dialog 示例
查看>>
ubuntu(centos) server安装vmware tools
查看>>
数据结构之最大不重复串
查看>>
为什么要配置sdk-tools/platform-toools?
查看>>
自己动手开发更好用的markdown编辑器-07(扩展语法)
查看>>
maven dependency:tree中反斜杠的含义
查看>>
队列的循环队列
查看>>
程序中的日期格式
查看>>
大众点评CAT错误总结以及解决思路
查看>>
C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )...
查看>>
MyEclipse 检出新项目后,如果项目名称签名有个红色感叹号
查看>>