合并两个有序链表

简介: 合并两个有序链表

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

 

今天和大家聊的问题叫做合并两个有序链表,我们先来看题面:

https://leetcode-cn.com/problems/merge-two-sorted-lists/

Merge two sorted linked lists and return it as a new sorted list. The new list should be made by splicing together the nodes of the first two lists.

题意

 

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

 

样例

 

 

输入:1->2->4, 1->3->4

输出:1->1->2->3->4->4

题解

两个有序链表的排序,实际上可以看成一个单链表使用归并排序的最后一个环节:“将两个排好序的子序列合并为一个子序列:每次都是从未比较的两个子序列的最小值中选出一个更小值”。

 

/**

* Definition for singly-linked list.

* public class ListNode {

* int val;//当前节点的值

* ListNode next;//下一个节点的引用值

* ListNode(int x) { val = x; }

* }

*/

class Solution {

   public ListNode mergeTwoLists(ListNode l1, ListNode l2) {

       ListNode temp=new ListNode(0);

       ListNode head=temp;//保留头节点的引用

       while(l1!=null&&l2!=null){

          if(l1.val<l2.val)

          {

              temp.next=l1;

              l1=l1.next;

          }

          else

          {

              temp.next=l2;

              l2=l2.next;

          }

          temp=temp.next;

       }

       if(l1==null) temp.next=l2;//l1子序列为空,则直接拼届l2

       if(l2==null) temp.next=l1;

       return head.next;//返回头节点指向的序列

   }

}

 

相关文章
|
2月前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
51 0
Leetcode第21题(合并两个有序链表)
|
2月前
|
存储 算法
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
104 0
|
4月前
|
Python
【Leetcode刷题Python】21. 合并两个有序链表
介绍了几种不同的方法来合并多个已排序的链表,包括暴力求解、使用小顶堆以及分而治之策略。
46 2
|
6月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
4月前
|
算法
LeetCode第21题合并两个有序链表
该文章介绍了 LeetCode 第 21 题合并两个有序链表的解法,通过创建新链表,依次比较两个链表的头节点值,将较小的值插入新链表,直至其中一个链表遍历完,再将另一个链表剩余部分接到新链表后面,实现合并。
LeetCode第21题合并两个有序链表
|
5月前
【数据结构OJ题】合并两个有序链表
力扣题目——合并两个有序链表
43 8
【数据结构OJ题】合并两个有序链表
|
4月前
|
算法
【算法】合并两个有序链表(easy)——递归算法
【算法】合并两个有序链表(easy)——递归算法
【算法】合并两个有序链表(easy)——递归算法
|
5月前
|
Java
力扣经典150题第五十八题:合并两个有序链表
力扣经典150题第五十八题:合并两个有序链表
43 2
|
6月前
|
算法 Java
[Java·算法·中等] LeetCode21. 合并两个有序链表
[Java·算法·中等] LeetCode21. 合并两个有序链表
62 2
|
6月前
21. 合并两个有序链表
21. 合并两个有序链表