zoukankan      html  css  js  c++  java
  • [leetCode].合并两个有序列表

    在这里插入图片描述

    解法一 暴力解法

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            //处理链表问题可以使用哑节点(哨兵节点)
            ListNode prehead = new ListNode(-1);
            //用一个指针指向这个哑节点
            ListNode prev = prehead;
            //循环条件为l1!=null,l2!=null
            while(l1 != null && l2 != null){
                //比较l1,l2当前节点的大小
                if(l1.val <= l2.val){
                    //将l1加到哑节点的链表上
                    prev.next = l1;
                    //l1指向l1链表上的下一个节点
                    l1 = l1.next;
                }else{
                    //将l2加到哑节点的链表上
                    prev.next = l2;
                    //l2指向l2链表上的下一个节点
                    l2 = l2.next;   
                }
                //无论l1与l2的值谁大,prev指针都要移动到哑节点链表的最后一个节点
                prev = prev.next;
            }
            //循环结束后l1与l2一定有一个为非空,将非空链表拼接到哑节点所在链表的链表尾
            prev.next = l1 == null ? l2 : l1;
            return prehead.next;
        }
    }
    

    解法二 递归

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            //l1.l2存在空链表,则返回非空链表
            if(l1 == null){
                return l2;
            }else if(l2 == null){
                return l1;
            }else if(l1.val <= l2.val){ //如果l1,l2都非空,则比较头节点,将较小的头节点指向子问题返回的链表
                l1.next = mergeTwoLists(l1.next, l2);
                return l1;
            }else{
                l2.next = mergeTwoLists(l1, l2.next);
                return l2;
            }
        }
    }
    
  • 相关阅读:
    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    Python3 运算符
    Python3 注释
    Python3 解释器
    Python3 环境搭建
    Python 3 教程
    Python3 基本数据类型
    趣闻|Python之禅(The Zen of Python)
    ios开发笔记根据传入字符串的长度动态生成label,并按照屏幕宽度排列
    iOS开发设置tableview的分割线
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860029.html
Copyright © 2011-2022 走看看