题解 | #合并两群能量值# 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
        if (l1 == null) {
            return l2;  // 如果链表1为空,直接返回链表2
        }
        if (l2 == null) {
            return l1;  // 如果链表2为空,直接返回链表1
        }

        ListNode head;  // 创建一个头节点
        if (l1.val >= l2.val) {
            head = l1;  // 头节点为链表1的头节点
            l1 = l1.next;  // 链表1向后移动一位
        } else {
            head = l2;  // 头节点为链表2的头节点
            l2 = l2.next;  // 链表2向后移动一位
        }

        ListNode current = head;  // 创建一个当前节点指针,初始化为头节点

        // 遍历链表l1和l2,比较节点的值,并按从大到小的顺序合并到新链表中
        while (l1 != null && l2 != null) {
            if (l1.val >= l2.val) {
                current.next = l1;  // 当前节点连接到链表1的节点
                l1 = l1.next;  // 链表1向后移动一位
            } else {
                current.next = l2;  // 当前节点连接到链表2的节点
                l2 = l2.next;  // 链表2向后移动一位
            }
            current = current.next;  // 当前节点指针后移一位
        }

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

        return head;  // 返回新链表的头节点
    }
}

知识点:链表的基本操作

上述代码定义了一个 Solution 类,其中包含一个方法 mergeEnergyValues,用于合并两个链表节点的能量值。该方法使用了迭代的方法,通过比较两个链表节点的值,将值较大的节点按照从大到小的顺序合并到一个新的链表中。具体步骤如下:

  1. 检查链表 l1 和 l2 是否为空,如果其中一个为空,直接返回非空的链表。
  2. 创建一个头节点 head,选择值较大的链表头节点作为头节点,并将对应链表向后移动一位。
  3. 创建一个当前节点指针 current,初始化为头节点。
  4. 遍历链表 l1 和 l2,比较节点的值,并将值较大的节点连接到当前节点的后面,同时将对应链表向后移动一位,然后将当前节点指针后移一位。
  5. 将剩余的节点直接连接到新链表的末尾。
  6. 返回新链表的头节点。 通过以上步骤,可以将两个链表的节点按照从大到小的顺序合并到一个新的链表中,并返回新链表的头节点。

全部评论

相关推荐

06-07 00:00
已编辑
腾讯_后端开发
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 13:05
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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