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

合并两群能量值

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

链表、递归、栈

全部评论

相关推荐

身边有人上海、深圳 6、7k 都去了,真就带薪上班了。
程序员小白条:木的办法, 以后越来越差,还是家附近宅着吧,毕业的人越来越多,岗位都提供不出来,经济又过了人口红利期
点赞 评论 收藏
分享
点赞 评论 收藏
分享
找个工作 学历是要卡的 要求是高的 技能不足是真的 实习经验是0的 简历无处可写是事实的 钱不好赚是真的 想躺平又不敢躺 也不甘心躺 怕自己的灵感和才华被掩埋甚至从未被自己发现 又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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