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。

相关推荐
微祎_2 分钟前
Flutter for OpenHarmony:构建一个 Flutter 重力弹球游戏,2D 物理引擎、手势交互与关卡设计的工程实现
flutter·游戏·交互
不穿格子的程序员5 小时前
从零开始刷算法——贪心篇1:跳跃游戏1 + 跳跃游戏2
算法·游戏·贪心
微祎_6 小时前
Flutter for OpenHarmony:构建一个 Flutter 镜像绘图游戏,对称性认知、空间推理与生成式交互设计
flutter·游戏·交互
前端不太难7 小时前
HarmonyOS 游戏项目,从 Demo 到可上线要跨过哪些坑
游戏·状态模式·harmonyos
子春一7 小时前
Flutter for OpenHarmony:色彩捕手:基于 CIELAB 色差模型与人眼感知的高保真色彩匹配游戏架构解析
flutter·游戏·架构
前端不太难11 小时前
在 HarmonyOS 上,游戏状态该怎么“死而复生”
游戏·状态模式·harmonyos
ujainu20 小时前
Flutter + OpenHarmony 游戏开发进阶:用户输入响应——GestureDetector 实现点击发射
flutter·游戏·openharmony
ujainu20 小时前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
呆呆敲代码的小Y21 小时前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
我的offer在哪里1 天前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎