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

合并两群能量值

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
#链表节点移动#
线性表基础 文章被收录于专栏

链表、递归、栈

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务