美文网首页
21.合并两个有序链表

21.合并两个有序链表

作者: 夜空中最亮的星_6c64 | 来源:发表于2018-12-20 11:07 被阅读0次

题目描述:

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

示例:

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

解答:

    public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        //类似于合并两个有序数组  声明结果链表 不断地延伸
        ListNode rs = new ListNode(0);
        //声明两个链表 遍历
        ListNode p = l1, q = l2, out = rs;
        //遍历两链表中最短的链表,即两链表共有的长度,依次延伸rs
        while (p != null && q != null) {
            if (p.val < q.val) {
                rs.next=p;
                rs = rs.next;
                p = p.next;
            } else {
                rs.next=q;
                rs = rs.next;
                q = q.next;
            }
        }
        //当两链表长度不一时
        
        //两个链表中有一个已经遍历结束,rs中链接未遍历结束的链表即可,有4种方式。while更好理解。
        /*//1.
        while (p != null) {
            rs.next=p;
            rs = rs.next;
            p = p.next;
        }
        while (q != null) {
            rs.next=q;
            rs = rs.next;
            q = q.next;
        }*/
        
        //如果l1短,链接l2。
        /*//2.
        if(p != null) {
            rs.next=p;
        }
        if (q != null) {
            rs.next=q;
        }
        */
        /*//3.
         if(p == null) {
            rs.next=q;//有一个疑问,q不一定长。改进为以下方法。
        }
        if (q == null) {
            rs.next=p;
        }
         */
        //4.
        if(p == null && q != null) {
            rs.next=q;//有一个疑问,q不一定长。
        }
        if (q == null && p != null) {
            rs.next=p;
        }
        System.out.println(out.val);
        return out.next;
    }

注意:

当遍历结束两链表相同长度后,可以直接使用if链接rs,不用while循环。

相关文章

  • leetcode 链表 [C语言]

    21. 合并两个有序链表 合并两个有序链表 61. 旋转链表 (快慢指针) 61. 旋转链表 相关标签 : 链表 ...

  • [Leetcode] 21. 合并两个有序链表

    21. 合并两个有序链表 来源: 21. 合并两个有序链表 1. 解题思路 递归或者非递归 2. 代码 2.1 ...

  • leetcode linked list

    21. 合并两个有序链表 83. 删除排序链表中的重复元素 21. 合并两个有序链表 160. 相交链表 第三个想...

  • LeetCode-21 合并两个有序链表

    题目:21. 合并两个有序链表 难度:简单 分类:链表 解决方案:链表的遍历 今天我们学习第21题合并两个有序链表...

  • LeetCode 21. 合并两个有序链表

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

  • 21. 合并两个有序链表

    20180923-摘抄自21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定...

  • 21. 合并两个有序链表

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

  • [LeetCode]21-合并两个有序链表

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

  • LeetCode 链表 > 21. 合并两个有序链表

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

  • 每日Leetcode—算法(3)

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

网友评论

      本文标题:21.合并两个有序链表

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