问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3877 访问。

给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

输入:[1,2,3]

输出:3

解释:只需要3次移动(注意每次移动会增加两个元素的值):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]


Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

Input:[1,2,3]

Output:3

Explanation:Only three moves are needed (remember each move increments two elements):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3877 访问。

public class Program {public static void Main(string[] args) {var x = new int[] { 1, 2, 3 };var res = MinMoves(x);Console.WriteLine(res);x = new int[] { 1, 2147483647 };res = MinMoves2(x);Console.WriteLine(res);x = new int[] { 1, 5, 7, 2, 3 };res = MinMoves3(x);Console.WriteLine(res);Console.ReadKey();}private static int MinMoves(int[] nums) {//这个解法未AC,因为nums.Sum()的值有可能会超出整型范围return nums.Sum() - nums.Length * nums.Min();}private static int MinMoves2(int[] nums) {var min = nums.Min();var sum = 0L;foreach (var num in nums) {sum += num;}return (int)(sum - min * nums.Length);}private static int MinMoves3(int[] nums) {var min = nums.Min();return nums.Sum(n => n - min);}}

以上给出3种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3877 访问。

3
2147483646
13

分析:

该题的解法思路为每次减1个数,使整个数组相等。

显而易见,MinMoves 、MinMoves2 和 MinMoves3 的时间复杂度基于部分函数库的实现,它们的时间复杂度应当均为:  。

C#LeetCode刷题之#453-最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)相关推荐

  1. 力扣(leetcode)[453. 最小操作次数使数组元素相等]我见识到了,算法的终极是数学

    > Problem: [453. 最小操作次数使数组元素相等 [TOC] # 思路 > 是我做算法做多了,我变菜了,世界的终极就是数学! # 解题方法 > 题目明确的说了,有n个数, ...

  2. 453. 最小移动次数使数组元素相等

    453. 最小移动次数使数组元素相等 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3]输出: 3解 ...

  3. LeetCode 453. 最小移动次数使数组元素相等(数学)

    1. 题目 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3]输出: 3 解释: 只需要3次移动(注 ...

  4. 【LeetCode】453. 最小操作次数使数组元素相等

    题目链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/ 题目描述 给定一个长度为 n 的 非空 整数数 ...

  5. 453. 最小操作次数使数组元素相等

    给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素相等的最小操作次数. class Solution {public int minMoves(int[] ...

  6. 力扣453.最小操作次数使数组元素相等

    题目描述 给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1.找出让数组所有元素相等的最小操作次数. 示例 输入: [1,2,3] 输出: 3 解释 只需要3次操作(注 ...

  7. LeetCode 453. 最小移动次数使数组元素相等

    题目描述: 解法一(暴力法): class Solution { public:int minMoves(vector<int>& nums) {int res=0;int mma ...

  8. leetcode 453,462. Minimum Moves to Equal Array Elements I, II | 453, 462. 最少移动次数使数组元素相等(图解)

    453. Minimum Moves to Equal Array Elements https://leetcode.com/problems/minimum-moves-to-equal-arra ...

  9. LeetCode Minimum Moves to Equal Array Elements II

    原题链接在这里:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/ 题目: Given a non-empt ...

最新文章

  1. 你哪来这么多事(五):职工信息插入
  2. 记一次网站部署遇到的问题
  3. [排错]运行cocos2d自带的cocos2d-test-ios工程出现错误:找不到libcocos2d.a
  4. 零基础学习大数据:零基础学习大数据最完整的学习路线
  5. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第10章-滤波器设计
  6. 数据挖掘十大算法--Apriori算法
  7. JPA保存数据时报持久化对象异常:PersistenceException: org.hibernate.PersistentObjectException
  8. Golang笔记——单元测试
  9. java中面向对象租车问题_答答租车系统-Java面向对象的学习
  10. sftp api java_SFTP例子2----使用JSch实现SFTP文件传输
  11. quickServer介绍
  12. 【Xamarin报错】visual studio android 模拟器部署卡住
  13. 数据库触发器调用python_python批量删除数据库触发器 | 学步园
  14. 【Oracle】ORA-27369: job of type EXECUTABLE failed with exit code: Key has expired
  15. VBA基础知识———常用语句
  16. 入门命令5-流程跳转:goto
  17. 2000-2021年款雷克萨斯原厂全套维修手册+电路图资料下载
  18. html表格行的悬停事件,jQuery实现HTML表格隔行变色及鼠标悬停变色效果
  19. 一个免费识别验证码的接口
  20. 电脑文件管理——XYplorer

热门文章

  1. Visual Studio 2013 详细安装教程(安装+注册)
  2. Osg/OsgEarth—— 无法打开文件osgGA/MatrixManipulator错误
  3. Python与机器视觉(x)windows下import cv2报错dll
  4. 非空约束 mysql
  5. 音乐后台管理 歌手查询功能 ktv 1216
  6. 办公自动化-演练-统计日报的演练-0223
  7. django-新的django项目
  8. Python之路(第十七篇)logging模块
  9. 第3章 Kotlin语言基础 《Kotlin 极简教程》
  10. C#学习常用方法(3000)---Foreach ,in