题解 | #合并两群能量值# java

合并两群能量值

https://www.nowcoder.com/practice/d728938f66ac44b5923d4f2e185667ec

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param l1 ListNode类 
     * @param l2 ListNode类 
     * @return ListNode类
     */
    public ListNode mergeEnergyValues (ListNode l1, ListNode l2) {
        // write code here
       // 创建哑节点作为合并后链表的头节点
        ListNode dummy = new ListNode(-1);
        ListNode current = dummy;

        // 通过比较链表节点的值,依次将较大的节点拼接到合并链表中
        while (l1 != null && l2 != null) {
            if (l1.val >= l2.val) {
                current.next = l1;
                l1 = l1.next;
            } else {
                current.next = l2;
                l2 = l2.next;
            }
            current = current.next;
        }

        // 将剩余的节点直接链接到合并链表的末尾
        if (l1 != null) {
            current.next = l1;
        }
        if (l2 != null) {
            current.next = l2;
        }

        return dummy.next;
    }
}

考察知识点:

  1. 链表:链表是一种常见的数据结构,它由节点组成,每个节点包含一个值和一个指向下一个节点的指针。在这个问题中,我们需要对两个链表进行合并操作,因此需要了解链表的基本概念、节点的创建和访问等操作。
  2. 归并排序:归并排序是一种经典的排序算法,其基本思想是将待排序的序列不断地分割成小的子序列,然后再将这些子序列不断地合并成更大的有序序列。在这个问题中,我们可以借鉴归并排序的思想,将两个非递增的链表合并成一个新的非递增链表。

代码大纲

  • 首先定义链表节点的类,包括一个整型值 val 和一个指向下一节点的指针 next。
  • 创建一个方法 merge,用于合并两个非递增链表。该方法接受两个链表的头节点作为参数,返回合并后的链表的头节点。
  • 在 merge 方法中,创建一个哑节点 dummy 作为合并后链表的头节点,以及一个指针 current 指向当前节点。
  • 使用两个指针 l1 和 l2,分别指向给定的两个链表的头节点。
  • 在一个循环中,比较 l1 和 l2 当前节点的值,将较大的节点拼接到合并链表中,并更新指针 current 和相应链表的指针。
  • 循环结束后,若其中一个链表遍历完了,则将剩余链表的节点直接链接到合并链表的末尾。
  • 返回哑节点 dummy 的下一个节点,即为合并后的非递增链表的头节点。
  • 编写测试代码,创建两个链表并调用 merge 方法进行合并,然后遍历打印合并后的链表的值,验证结果是否正确。
全部评论

相关推荐

今天 14:37
门头沟学院 Java
点赞 评论 收藏
分享
码砖:求职岗位要突出,一眼就能看到,教育背景放到最后,学校经历没那么重要,项目要重点突出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务