题解 | #合并两群能量值# 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
,用于合并两个链表节点的能量值。该方法使用了迭代的方法,通过比较两个链表节点的值,将值较大的节点按照从大到小的顺序合并到一个新的链表中。具体步骤如下:
- 检查链表
l1
和l2
是否为空,如果其中一个为空,直接返回非空的链表。 - 创建一个头节点
head
,选择值较大的链表头节点作为头节点,并将对应链表向后移动一位。 - 创建一个当前节点指针
current
,初始化为头节点。 - 遍历链表
l1
和l2
,比较节点的值,并将值较大的节点连接到当前节点的后面,同时将对应链表向后移动一位,然后将当前节点指针后移一位。 - 将剩余的节点直接连接到新链表的末尾。
- 返回新链表的头节点。 通过以上步骤,可以将两个链表的节点按照从大到小的顺序合并到一个新的链表中,并返回新链表的头节点。