题解 | #合并两群能量值#
合并两群能量值
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) {
ListNode pre = new ListNode(-1);
ListNode cur = pre;
while (l1 != null && l2 != null) {
int val;
if (l1.val >= l2.val) {
val = l1.val;
l1 = l1.next;
} else {
val = l2.val;
l2 = l2.next;
}
cur.next = new ListNode(val);
cur = cur.next;
}
cur.next = l1 == null ? l2 : l1;
return pre.next;
}
}
本题考查的依然是链表的遍历,类似与合并有序数组,使用两个指针 l1 和 l2 同时遍历节点:
- l1.val >= l2.val,取 l1 节点,l1 指针向后移动,l2 指针不动
- l1.val < l2.val,取 l2 节点,l2 指针向后移动,l1 指针不动
- 当某一个指针遍历的末尾时,直接取另一个节点即可