题解 | #合并两群能量值#
合并两群能量值
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; if (l2 == null) return l1; ListNode head = l1.val >= l2.val ? l1 : l2, p = head, q = p == l1 ? l2 : l1, next; while (p != null && q != null) { while (p.next != null && p.next.val >= q.val) p = p.next; next = p.next; p.next = q; p = q; q = next; } return head; } }
- 边界值判断,其中一个为null,返回另一个
- 取两个链表中头节点值大的作为新链表的头节点,并定义两个指针 p、q 分别指向一个头节点值较大的,一个头节点值较小的
- 循环开始:只要p、q都不为null,循环继续
- 循环查找 p:只要p的next的值大于q的值,就继续
- 找到后,先记录p的next
- 将p与q连接起来,即 p.next = q
- p 移动到 q 的位置,q移动到 next 的位置
- 循环结束,返回 head
线性表基础 文章被收录于专栏
链表、递归、栈