当前位置: 首页 > 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),主要用于存储每个小伙伴的能量晶石数量。

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

http://www.dtcms.com/a/53980.html

相关文章:

  • 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#数据类型及相互转换
  • GitHub获取token
  • 计算光学成像与光学计算概论
  • typedef关键字、using关键字
  • RoboBrain:从抽象到具体的机器人操作统一大脑模型
  • 初阶数据结构习题【11】(3顺序表和链表)——141. 环形链表I
  • vue面试宝典之二
  • Linux14-io多路复用
  • Impacket工具中的横向渗透利器及其使用场景对比详解
  • Vue进阶之Vue3源码解析(二)
  • 零基础学习Python之面向对象编程:属性访问控制与封装实现_我的学习Python记录13