• 合并两个有序链表


    题目

    将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。

    分析

    创建一个新的链表,依次从两个链表中取出当前节点进行比较,小的放到新链表上。最后如果其中一个链表还有剩余,直接放到新链表的末尾。注意不要忘了判断链表为空的状态。

    代码实现

    import java.util.*;
    
    /*
     * public class ListNode {
     *   int val;
     *   ListNode next = null;
     * }
     */
    
    public class Solution {
        /**
         * 
         * @param l1 ListNode类 
         * @param l2 ListNode类 
         * @return ListNode类
         */
        public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
           //其中有一个链表为空,返回另一个不会空的链表,如果都为空返回null
            if(l1==null){
               return l2;
           }
            if(l2==null){
                return l1;
            }
            //创建头结点
            ListNode head = new ListNode(0);
            //最后返回的节点是头结点的next
             ListNode resultNode = head;
            // 开始遍历两个链表,一次比较两个链表节点的大小,小的放在head节点的next
            while(l1!=null&&l2!=null){
                if(l1.val>l2.val){
                    head.next = l2;
                    l2 = l2.next;
                }else{
                    head.next = l1;
                    l1 = l1.next;
                }
                head= head.next;
            }
            //最后如果有一个链表还有剩余,直接把剩下的节点放到head尾部
            head.next = (l1 == null)?l2:l1;
            //返回当时定义的节点的next
            return resultNode.next;
        }
    }
    
    

    本题链接,传送门
    思路比较简单,但还是要注重细节,在比较之前需要记录一下初始状态,最终返回的是初始结点的next节点。

    在这里插入图片描述

    有时候不是看到了希望再去坚持,而是坚持下去才能看到希望!

  • 相关阅读:
    沉默
    抱冰握火
    数据库原理-SQL查询语句
    简单算法的实现——集合
    团队总结
    个人作业----项目测试
    团队项目-Beta冲刺
    团队项目-Alpha版本发布1
    团队项目-----系统设计 认真不马虎队
    团队项目----需求分析 认真不马虎队
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121842.html
Copyright © 2020-2023  润新知