java实现合并两排序链表
来源:互联网 发布:邪恶帝软件下载 编辑:程序博客网 时间:2024/05/21 15:50
需求:
将两个排序链表合并为一个新的排序链表。比如:给出 1->3->8->11->15->null
,2->null
, 返回1->2->3->8->11->15->null
。
分析:
1、类似于将两个有序数组合并为一个新的有序数组,如果有一个数组是null,那么新的数组就是另一个,如果两个数组都不是null,这时候就需要对两个数组进行遍历。逐个比较两数组的元素,将小的数值添加到新的数组中,比如数组a中的数值小,就将a中的数值添加到新的数组中,并且将a的遍历角标向后移动一位,继续重复上述过程,直到某个数组被遍历完了,这时直接将未被遍历完的数组中的数值直接添加到新的数组中即可。
2、与合并有序数组不同的是,合并链表不需要开辟新的空间,只是指针的移动。
3、合并有序链表,需要先判断两个链表是否是null,如果一个是null,那么返回结果就是另一个链表的头结点。如果两个头结点都不是null,需要遍历两个链表,将数值小的节点添加到结果节点的next上,然后遍历向后移动一个,重复上述过程,直到最后有个链表遍历完了,这时将另一个链表中未被遍历的子链表的头节点赋给当前结果链表最后一个节点的next即可。
代码:
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */public class Solution { /* * @param l1: ListNode l1 is the head of the linked list * @param l2: ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ public ListNode mergeTwoLists(ListNode l1, ListNode l2) { // write your code here //判断l1和l2是否是null if(l1 == null){ return l2; } if(l2 == null){ return l1; } //经过上述判断可以得到l1和l2都不是null ListNode result = new ListNode(0); ListNode p = result;//通过节点p对result对应的链表进行操作 while(l1 != null && l2 != null){ if(l1.val < l2.val){ p.next = l1;//也可以p.next = new ListNode(l1.val);但是会增加很多多余的节点,不够最优 p = p.next; l1 = l1.next; } else{ p.next = l2; p = p.next; l2 = l2.next; } } //如果l1==null,说明l2的链表中还有节点没有遍历,直接将p.next=l2即可 if(l1 == null){ p.next = l2; } else{ p.next = l1; } }}
阅读全文
0 0
- java实现合并两排序链表
- Java实现-合并两个排序链表
- 两有序链表合并排序
- 合并两条排序的链表
- 合并排序java实现
- 合并两个排序的链表(Java实现)
- Java实现-合并k个排序链表
- 合并两个排序的链表java实现
- java实现合并排序算法
- Java实现-合并排序数组
- java实现把两张图片合并
- java实现把两张图片合并
- 两路合并排序
- 两路合并排序
- java 合并两个排序的链表
- java 顺序表实现增删改查,合并,排序功能
- c++实现两有序链表合并成一个新链表
- 剑指Offer--面试题17:合并两个排序的链表--Java实现
- 使用Oracle包DBMS_FILE_TRANSFER进行copy文件
- 「树莓派玩转物联网」之SSH连接树莓派
- Linux文件系统之aufs
- 数据库学习3
- 喷射字符2
- java实现合并两排序链表
- 【cs231n】assignment1 :k-Nearest Neighbor classifier
- 深刻理解Python中的元类(metaclass)
- JAVA基础总结
- 工作之初,生活伊始
- 关于 >/dev/null 2>&1 的解释
- 公用体
- YTU.3178: 少校吃小炒
- [自学]Java的MATH类和BigDecimal