zoukankan      html  css  js  c++  java
  • 21.合并两个有序链表

    题目

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

    示例:

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

    解答:

    我们拿到题目首先注意到的是,有序,并且这两个链表的长度是不定的,所以有可能出现的情况是:一个链表为空,另外一个链表是4个长度。 这些细节我们在分析问题的时候都需要考虑到。

    既然是有序链表,我们就需要比较两个数值的大小来决定谁排在前面。我们可以把这个问题当成数组的问题,那么我们就需要重新设定一个新的数组,然后遍历这两个有序数组,然后小的存进新的数组。

    而在链表中,我们需要先设定一个头结点,然后就相当于是定义了一个新的链表。我们把值一个一个往里面装就可以了,最后需要考虑的问题的是:链表的长度不一致的时候,我们需要把我们的新的链表指向还不为空的那个链表。

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     public int val;
     *     public ListNode next;
     *     public ListNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public ListNode MergeTwoLists(ListNode l1, ListNode l2) {
            ListNode head = new ListNode(0);
            ListNode p = head;
            while(l1 != null && l2 != null)
            {
                if(l1.val <= l2.val)
                {
                    p.next = l1; 
                    l1 = l1.next;
                }
                else
                {
                    p.next = l2;
                    l2 = l2.next;
                }
                p = p.next;
            }
            if(l1 != null)
                p.next = l1;
            if(l2 != null)
                p.next = l2;
            return head.next;
        }
    }
    

    参考:【LeetCode021】合并有序链表

  • 相关阅读:
    sentinel集群刚开始好的,过几分钟就崩了
    redis主从文件权限问题
    centos7下解决keepalived双机都为master问题
    windows局域网共享文件夹
    最近JS的一些问题
    总结下html、css的一些东西
    Less、一些选择器
    常见布局、媒体查询
    audio标签、HOVER效果、rgba和opacity、隐藏场景
    护工列表页
  • 原文地址:https://www.cnblogs.com/zhang-mo/p/10860754.html
Copyright © 2011-2022 走看看