27游戏英雄升级潜力评估-青训营刷题

问题描述

小U在一款挂机游戏中拥有n个英雄。游戏中有一种历练升级机制,每天可以选择两个英雄进行历练,如果两位英雄的等级相同,则他们的等级都不会改变。如果英雄等级不同,那么等级较高的英雄会增加1级,而等级较低的英雄则保持不变。

小U希望至少有一个英雄能够达到2000000000000000级,他想知道有多少英雄有潜力通过历练达到这个等级。


测试样例

样例1:

输入:n = 5 ,u = [1, 2, 3, 1, 2]

输出:3

样例2:

输入:n = 4 ,u = [100000, 100000, 100000, 100000]

输出:0

样例3:

输入:n = 6 ,u = [1, 1, 1, 2, 2, 2]

输出:3

代码如下:

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        System.out.println(solution(5, new int[]{1, 2, 3, 1, 2}) == 3);
        System.out.println(solution(4, new int[]{100000, 100000, 100000, 100000}) == 0);
        System.out.println(solution(6, new int[]{1, 1, 1, 2, 2, 2}) == 3);
    }

    public static int solution(int n, int[] u) {
        // Sort the array
        Arrays.sort(u);

        int ans = 0, t = 0;
        t = u[0];
        for (int i = 0; i < u.length; i++) {
            if (u[i] != t) {
                ans = n - i;
                break;
            }
        }
        return ans;
    }
}

代码解释:

这段代码的功能是计算一个整数数组中,从第一个与数组第一个元素不同的元素开始到数组末尾的元素个数。如果数组中所有元素都相同,则返回0。以下是对代码的详细解释:

1. 主函数 main

java复制

复制代码
public static void main(String[] args) {
    System.out.println(solution(5, new int[]{1, 2, 3, 1, 2}) == 3);
    System.out.println(solution(4, new int[]{100000, 100000, 100000, 100000}) == 0);
    System.out.println(solution(6, new int[]{1, 1, 1, 2, 2, 2}) == 3);
}
  • main 方法是程序的入口。

  • 它调用了 solution 方法三次,分别传入不同的测试用例,并打印出结果是否符合预期。

  • 每次调用 solution 方法后,使用 == 比较返回值是否等于预期值,然后输出布尔值(truefalse)。

2. solution 方法

java复制

复制代码
public static int solution(int n, int[] u) {
    // Sort the array
    Arrays.sort(u);

    int ans = 0, t = 0;
    t = u[0];
    for (int i = 0; i < u.length; i++) {
        if (u[i] != t) {
            ans = n - i;
            break;
        }
    }
    return ans;
}
功能
  • 输入参数

    • n:数组的长度。

    • u:一个整数数组。

  • 输出

    • 返回从第一个与数组第一个元素不同的元素开始到数组末尾的元素个数。如果数组中所有元素都相同,则返回0。
实现逻辑
  1. 排序

    java复制

    复制代码
    Arrays.sort(u);
    • 使用 Arrays.sort 方法对数组 u 进行升序排序。排序后,相同的元素会聚集在一起。
  2. 初始化变量

    java复制

    复制代码
    int ans = 0, t = 0;
    t = u[0];
    • ans 用于存储最终结果。

    • t 用于存储数组的第一个元素(排序后数组的第一个元素)。

  3. 遍历数组

    java复制

    复制代码
    for (int i = 0; i < u.length; i++) {
        if (u[i] != t) {
            ans = n - i;
            break;
        }
    }
    • 遍历排序后的数组 u

    • 如果当前元素 u[i] 不等于 t(即第一个元素),说明找到了第一个与第一个元素不同的元素。

    • 计算从这个不同元素开始到数组末尾的元素个数:n - in 是数组长度,i 是当前索引)。

    • 使用 break 退出循环,因为已经找到了第一个不同的元素。

  4. 返回结果

    java复制

    复制代码
    return ans;
    • 如果数组中所有元素都相同,循环不会中断,ans 保持为0。

    • 如果找到了不同的元素,返回计算的结果 ans

3. 测试用例解释

测试用例1

java复制

复制代码
System.out.println(solution(5, new int[]{1, 2, 3, 1, 2}) == 3);
  • 输入数组:{1, 2, 3, 1, 2}

  • 排序后:{1, 1, 2, 2, 3}

  • 第一个与第一个元素(1)不同的元素是2,位置在索引2。

  • 从索引2到末尾的元素个数:5 - 2 = 3

  • 输出:true

测试用例2

java复制

复制代码
System.out.println(solution(4, new int[]{100000, 100000, 100000, 100000}) == 0);
  • 输入数组:{100000, 100000, 100000, 100000}

  • 排序后:{100000, 100000, 100000, 100000}

  • 所有元素都相同,没有找到不同的元素。

  • 输出:true

测试用例3

java复制

复制代码
System.out.println(solution(6, new int[]{1, 1, 1, 2, 2, 2}) == 3);
  • 输入数组:{1, 1, 1, 2, 2, 2}

  • 排序后:{1, 1, 1, 2, 2, 2}

  • 第一个与第一个元素(1)不同的元素是2,位置在索引3。

  • 从索引3到末尾的元素个数:6 - 3 = 3

  • 输出:true

总结

这段代码通过排序和遍历数组,找到第一个与第一个元素不同的位置,并计算从该位置到数组末尾的元素个数。如果数组中所有元素都相同,则返回0。

相关推荐
前端不太难1 天前
HarmonyOS 游戏里,Ability 是如何被重建的
游戏·状态模式·harmonyos
灵狐数据FoxData1 天前
QQ农场今日回归,我们想“偷”回的到底是什么?
游戏·社交电子·业界资讯·娱乐·玩游戏
微祎_1 天前
Flutter for OpenHarmony:构建一个 Flutter 平衡球游戏,深入解析动画控制器、实时物理模拟与手势驱动交互
flutter·游戏·交互
renke33641 天前
Flutter for OpenHarmony:构建一个 Flutter 色彩调和师游戏,RGB 空间探索、感知色差计算与视觉认知训练的工程实现
flutter·游戏
ujainu1 天前
Flutter + OpenHarmony 实现经典打砖块游戏开发实战—— 物理反弹、碰撞检测与关卡系统
flutter·游戏·openharmony·arkanoid·breakout
呆呆敲代码的小Y1 天前
【Unity 实用工具篇】 | Book Page Curl 快速实现翻书效果
游戏·unity·游戏引擎·u3d·免费游戏·翻书插件
串流游戏联盟1 天前
星铁4.0前瞻开启!手机玩家体验或将进一步下降
游戏·远程工作
renke33641 天前
Flutter for OpenHarmony:构建一个 Flutter 数字迷宫游戏,从随机路径生成到认知训练系统的完整工程实践与跨学科深度解析
flutter·游戏
子春一1 天前
Flutter for OpenHarmony:构建一个 Flutter 数字消消乐游戏,深入解析网格状态管理、合并算法与重力系统
算法·flutter·游戏
yunteng5212 天前
游戏全球服_基础信息
游戏·全球同服