zoukankan      html  css  js  c++  java
  • LeetCode--LinkedList--21.Merge Two Sorted Lists (Easy)

    21. Merge Two Sorted Lists (Easy)

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
    
    Example:
    
    Input: 1->2->4, 1->3->4
    Output: 1->1->2->3->4->4
    

    solution##

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

    总结##

    题意是给定两个有序链表l1和l2,将这两个链表合并成一个有序链表。我的思路是构造一个头结点head,然后用一个while循环遍历这两个链表,如果l1.val大于l2.val,则将l2结点用temp变量保存起来,然后l2指向下一个结点,否则,则将l1结点用temp变量保存起来,然后l1指向下一个结点;接着使用尾插法将temp结点插到head链表的尾部;循环结束之后,再将剩下的结点直接插入到head链表尾部,最后返回head.next结点。
    还有一种思路是用递归,这里就不细说了。

    Notes
    1.链表的插入,删除操作最好构造一个额外的头结点,方便操作的统一;
    2.此题与两个有序数组的合并是一样的思路;

  • 相关阅读:
    python的进阶--爬虫小试
    【centos 7】搭FTP服务和web访问
    centos 7 安装python3.5
    centos 6.5 安装mysql 5.6.35--libc.so.6(GLIBC_2.14)(64bit)
    windows 10 下安装python 2.7
    centos7-硬盘坏道检测
    centos7 默认进入系统命令行模式修改
    zabbix安装配置(2.4.5)
    Centos 7 mysql 安装使用记
    docker部署angular和asp.net core组成的前后端分离项目
  • 原文地址:https://www.cnblogs.com/victorxiao/p/11162218.html
Copyright © 2011-2022 走看看