当前位置: 首页 > news >正文

能量石[算法题]

题目来源:第十五届蓝桥杯大赛软件赛省赛Java 大学 B 组(算法题)

可以参考一下,本人也是比较菜

不喜勿喷,求求求

 
import java.util.Scanner;
 ​
 public class Main {
     public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         // 读取小伙伴的数量
         int n = scanner.nextInt();
         long[] a = new long[n];
         long min = Long.MAX_VALUE;
         // 读取每个小伙伴的能量晶石数量,并找出最小值
         for (int i = 0; i < n; i++) {
             a[i] = scanner.nextLong();
             if (a[i] < min) {
                 min = a[i];
             }
         }
         long moves = 0;
         // 计算每个小伙伴与最小值的差值,并累加
         for (int i = 0; i < n; i++) {
             moves += a[i] - min;
         }
         System.out.println(moves);
         scanner.close();
     }
 }

解题思路:

为了使所有小伙伴的能量晶石数量相同,我们可以通过数学推导发现,最终的操作次数可以通过计算每个小伙伴的能量晶石数量与一个固定值的差值的绝对值之和来得到。

我们可以先找到初始能量晶石数量最少的小伙伴,以他为基准,让其他小伙伴去补充能量,这样可以保证操作次数最少。

复杂度分析

  • 时间复杂度O(n),其中 n 是小伙伴的数量。主要时间开销在于读取输入和遍历数组计算差值。

  • 空间复杂度O(n),主要用于存储每个小伙伴的能量晶石数量。

有更好的方法欢迎留言和交流

相关文章:

  • YOLOv12 项目部署指南! 含报错解决
  • Flutter底层实现
  • Go学习笔记:基础语法3
  • 【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】
  • CSS+Html面试题(二)
  • python网络爬虫开发实战之爬虫基础
  • Unity自定义渲染管线(Scriptable Render Pipeline)架构设计与实现指南
  • netty中Future和ChannelHandler
  • Best practice-生产环境中加锁的最佳实践
  • Anaconda 部署 DeepSeek
  • Java 大视界 -- Java 大数据在智能政务公共服务资源优化配置中的应用(118)
  • Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴
  • 深入解析“Elaborate”——从详细阐述到精心制作的多重含义
  • 绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • LLM-初识AI
  • 自律linux 第 35 天
  • 【C++】数据结构 双链表的实现(企业存储用户数据的实现)
  • Windows逆向工程入门之MASM 数据寻址
  • GTID模块初始化简介和参数binlog_gtid_simple_recovery
  • C#数据类型及相互转换
  • 集齐中国泳坛“老中青”!200自潘展乐力压汪顺、孙杨夺冠
  • 脱欧后首次英欧峰会召开前夕,双方却因渔业和青年流动议题僵住了
  • 深一度|上座率连创纪录撬动文旅,中超可否复制大连模式
  • 学生靠老干妈下饭、职工餐肉类又多又好?纪委出手整治
  • 证监会披露两起操纵市场处罚结果,今年来涉操纵股票罚没金额超7.5亿元
  • 罗马教皇利奥十四世正式任职