打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
链接两个有序链表
这道题目比较简单,经典的链表基本操作。维护两个指针对应两个链表,因为一般会以一条链表为基准,比如说l1, 那么如果l1当期那的元素比较小,那么直接移动l1即可,否则将l2当前的元素插入到l1当前元素的前面。算法时间复杂度是O(m+n),m和n分别是两条链表的长度,空间复杂度是O(1),代码如下:
[java] view plain copy
/**
* Definition for singly-linked list.
* public class ListNode {
*     public int val;
*     public ListNode next;
*     public ListNode(int x) { val = x; }
* }
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode helper = new ListNode(0);
ListNode pre = helper;
helper.next = l1;
while(l1!=null && l2 != null)
{
if(l1.val>l2.val)
{
ListNode next = l2.next;
l2.next = pre.next;
pre.next = l2;
l2 = next;
}
else
{
l1 = l1.next;
}
pre = pre.next;
}
if(l2!=null)
{
pre.next = l2;
}
return helper.next;
}
这个题类似的有Merge Sorted Array,只是后者是对数组进行合并操作,面试中可能会一起问到。扩展题目Merge k Sorted Lists, 这是一个在分布式系统中比较有用的基本操作,还是需要重视,面试中可以发散出很多问题。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Merge k Sorted Lists -- LeetCode
详细介绍链表原理即应用(Java语言)
615,双指针解两数相加
LeetCode实战:两数相加
​LeetCode刷题实战203:移除链表元素
无痛合并两个有序链表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服