两个升序链表合并为一个新的 升序 链表并返回

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

思路:这里使用的主要数据结构是单链表。该算法采用经典的双指针技术来合并列表。

A dummy node is created; this node does not hold any meaningful value but serves as the starting point of the merged linked list.
将创建一个虚拟节点;此节点不包含任何有意义的值,但用作合并链表的起点。
A curr pointer is initialized to point at the dummy node. This pointer moves along the new list as nodes are added.
curr 指针初始化为指向虚拟节点。添加节点时,此指针会沿新列表移动。

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode dummyHead = new ListNode();
ListNode current = dummyHead;

while (list1!= null&& list2!=null){
if(list1.val<=list2.val){
current.next=list1;
list1=list1.next;
}else{
current.next=list2;
list2=list2.next;
}
current=current.next;
}

current.next=(list1==null)?list2:list1;

return dummyHead.next;
}
}

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 两个升序链表合并为一个新的 升序 链表并返回

提供最优质的资源集合

立即查看 了解详情