数据结构与算法

剑指 Offer 25 合并两个排序的链表

2021-12-20  本文已影响0人  itbird01

剑指 Offer 25. 合并两个排序的链表

题意:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

解题思路

解法1:
1.分析题意,两个链表为递增排序,所以可以先声明一个哑结点,然后将L1链表跟在哑结点的后面
2.遍历L2,每次遍历时,找到L1链表中第一个大于L2.val的结点
3.将找到的结点的pre结点next,指向L2.val创建的新结点
4.将pre.next.next指向找到的第一个大于L2.val的结点,将原先的链表连接起来
5.将pre结点向后移动一位、L2向后移动一位
6.循环2~5,直到L2的末尾

解题遇到的问题

后续需要总结学习的知识点

##解法1
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode node = new ListNode(0);
        node.next = l1;
        ListNode ans = node;
        ListNode pre = node;
        node = node.next;
        while (l2 != null) {
            while (node != null) {
                if (node.val >= l2.val) {
                    break;
                }
                pre = node;
                node = node.next;
            }

            pre.next = new ListNode(l2.val);
            pre.next.next = node;
            pre = pre.next;
            l2 = l2.next;
        }
        return ans.next;
    }

    public class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读