zoukankan      html  css  js  c++  java
  • 将两个有序链表合并为一个新的有序链表并返回

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

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

    从两个有序链表的第一个结点开始比较,val值小的结点尾插入结果链表。
    具体实现:

    定义变量
    (1)定义变量 cur1,cur2 分别表示两个链表;
    (2)定义一个新链表 result 作为结果链表;
    (3)val值小的结点要尾插入结果链表,则必须知道结果链表的最后一个结点; 定义变量 last;
    如果链表 cur1 为空,则直接返回 cur2;
    如果链表 cur2 为空,则直接返回 cur1;
    如果两个链表都为空,则执行任意一句代码即可;
    cur1 == null; return cur2;
    cur2 == null; return cur1
    如果两个链表都不为空,开始遍历
    (1)cur1.val <= cur2.val,把cur1尾插入结果链表;
    (2)cur1.val > cur1.val,把cur2尾插入结果链表;
    当遍历不满足cur1 != null 且 cur2 != null时退出循环,此时必有一个链表为空。
    (1)cur1 == null时,则cur2中剩下的所有结点都直接插入结果链表,即:last.next = cur2;

    (2)cur2 == null时,则cur2中剩下的所有结点都直接插入结果链表,即:last.next = cur1;
    返回结果链表 :return result;
    实现代码:

    package www.fanfan.com;
    
    /**
     * author:kelly_fanfan
     */
    public class LeetCode21 {
        class ListNode {
            private int val;
            private ListNode next;
    
            public ListNode(int val) {
                this.val = val;
                this.next = null;
            }
        }
        class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode cur1 = l1;
            ListNode cur2 = l2;
            ListNode result = null;
            ListNode last = null;
            if(cur1 == null){
                return cur2;
            }
            if(cur2 == null){
                return cur1;
            }
            while(cur1 != null && cur2 != null){
                if(cur1.val <= cur2.val){
                    ListNode next = cur1.next;
                    cur1.next = null;
                    if(result == null){
                        result = cur1;
                    }else{
                        last.next = cur1;
                    }
                    last = cur1;
                    cur1 = next;
                }else{
                    ListNode next = cur2.next;
                    cur2.next = null;
                    if(result == null){
                        result = cur2;
                    }else{
                        last.next = cur2;
                    }
                    last = cur2;
                    cur2 = next;
                }
            }
            if(cur1 != null){
                last.next = cur1;
            }
            if(cur2 != null){
                last.next = cur2;
            }
            return result;
        }
    }
    }
    

      

  • 相关阅读:
    已有模板与tp框架结合
    模板文件引入css样式文件
    通过vertical-align属性实现“竖向居中”显示
    解决PHP服务端返回json字符串有特殊字符的问题
    PHP数组排序函数:sort、asort和ksort的不同
    PHP常用开发函数解析之数组篇
    PHP将数组存入数据库中的四种方式
    PHP foreach的两种用法 as $key => $value
    sharepoint database 操作
    Enabling Remote Errors in SSRS
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/14761224.html
Copyright © 2011-2022 走看看