美文网首页数据结构与算法
剑指 Offer 25 合并两个排序的链表

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

作者: itbird01 | 来源:发表于2021-12-20 07:18 被阅读0次

    剑指 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;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:剑指 Offer 25 合并两个排序的链表

        本文链接:https://www.haomeiwen.com/subject/raeyfrtx.html