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

【LeetCode453.最小操作次数使数组元素相等】

题目链接

453. 最小操作次数使数组元素相等 - 力扣(LeetCode)

实现思路

借鉴了一下大佬的思路(453. 最小操作次数使数组元素相等 - 力扣(LeetCode)),然后基于自己原本的暴力解法来理解题目。

  • 最开始没看数据范围,直接模拟,每次对当前最小的n-1个数自增。
  • 但是,这里可以发现一个思想,就是每次一定会对最初最小的那个数做自增操作。
  • 现在,假设最终每个元素都变为t,操作次数为ans。那么(t*n - sum)/(n - 1) = ans.
  • 由于每次都会对最初最小的那个数mn进行自增操作,因此mn + ans = t.

代码实现

class Solution {
public:int minMoves(vector<int>& nums) {// 1.一个直觉的想法,贪心,每次肯定是对最小的n-1个数进行加1,但是这么做时间复杂度很高// int n = nums.size();// int cnt = 0;// while (true) {//     int flag = 1;//     for (int i = 1; i < n; i++) {//         if (nums[i] != nums[i - 1]) {//             flag = 0;//             break;//         }//     }//     if (flag) return cnt;//     sort(nums.begin(), nums.end());//     for (int i = 0; i < n - 1; i++) {//         nums[i]++;//     }//     cnt++;// }// return -1;// 2.数学法// 假设最终每个元素是t,操作次数是ans// 那么 (t * n - sum) / (n - 1) = ans// 并且,由上面贪心的想法,也可以知道,数组中最小的元素,每次都要参与+1操作// 那么 min + ans = t// 联立 ans = sum - min * nint sum = 0;int n = nums.size();int mn = nums[0];for (int i = 0; i < n; i++) {sum += nums[i];mn = min(mn, nums[i]);}return sum - mn * n;}
};

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

相关文章:

  • leetcode-链表排序
  • Matlab中optimoptions的用法
  • docker 443错误 lookup docker.mirrors.ustc.edu.cn: no such host
  • Hap包引用的Hsp报签名错误怎么解决
  • ABSD(基于架构的软件开发)深度解析:架构驱动的工程范式
  • 初学者关于算法复杂度的学习笔记
  • goframe框架中获取url内容并转成Base64字符串
  • 【QGC】深入解析 QGC 配置管理
  • AAAI-2025 | 西交模拟人类空间推理策略的具身导航!REGNav:房间专家引导的图像目标导航
  • Linux文件的权限
  • Kotlin基础学习记录
  • 【MediaSoup】MS_DUMP打印转换为PLOGI的形式
  • Python-难点-uinttest
  • 网络资源模板--基于Android Studio 实现的记事本App
  • 通过卫星图像追踪城市扩张
  • Windows npx n8n 方式运行n8n密码忘了重置密码
  • IDEA中一个服务创建多个实例
  • PyQt5布局管理(QBoxLayout(框布局))
  • 企业商业秘密保卫战:经营信息类案件维权全攻略
  • WildCard野卡已跑路(包含gpt plus升级方案)
  • C++结构体嵌套
  • Datawhale AI夏令营 MCP初体验——简历小助手
  • DeepSeek-Qwen蒸馏模型解析
  • 苍穹外卖-day06
  • 自助空间系统迭代历程|自助门店运营系统全新升级
  • AI炼丹日志-30-新发布【1T 万亿】参数量大模型!Kimi‑K2开源大模型解读与实践
  • 电子电气架构 --- ECU存储与计算资源冗余设计规范
  • 实习内容总结
  • 笔记/了解未来:财务建模与预测
  • 系统思考助力转型