题解 | #合并两个排序的链表#

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

题解思路

双指针遍历:两个指针或是同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指针)

这里采用同方向访问两个链表的双指针。

首先考虑其中一个链表为空的情况,直接返回另一个链表头;

新建一个链表头,比较两个链表头的大小,选择小的那个节点接在新的链表头后面,然后把该链表上的指针向后移一位(只移动被添加的链表上的指针);

如果两个链表有剩余,直接接在后面;

最后,返回新链表头的下一个节点即可。

空间复杂度:O(1),没有新建空间,用的都是已有链表的节点所占空间。

-----

吸收

  • 不同类型的双指针
  • 可以新建一个链表头,方便接收两个链表中的来的节点;
  • 分析空间复杂度时,并不是新建一个链表就是 O(n) 的复杂度,如果新链表只把原来链表中的节点拼接起来,那么空间复杂度是 O(1)

-----

原来的思路

在两个链表间来回循环,做 in-place 操作:

但代码写起来很复杂,需要不断在两个链表间查找插入点;并且有很多难以考虑的情况,如:

【1,2,3】和 【3,3,3】;【1,3,5】和 【1,3,5】

遂放弃

全部评论

相关推荐

千千倩倩:简历问题有点多,加v细聊
点赞 评论 收藏
分享
09-20 22:39
中南大学
故事和酒66:意思就是用了AI辅助也不一定做得出来,还是有区分度,不然他不会让你用的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务