• 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】合并有序链表

  • 相关阅读:
    关于前后端跨域问题的解决
    vue+vuex+router+element ui
    winfrom导入excel文件
    winform 导出excel文件
    winfrom DataGridView 列表操作
    LaTex之CTex初体验一
    图像配准的步骤
    Phase Based Feature Detection and Phase Congruency(相位一致性)
    查找论文中的代码
    KullbackLeibler
  • 原文地址:https://www.cnblogs.com/zhang-mo/p/10860754.html
Copyright © 2020-2023  润新知