C#LeetCode刷题之#453-最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)
问题
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 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)相关推荐
- 力扣(leetcode)[453. 最小操作次数使数组元素相等]我见识到了,算法的终极是数学
> Problem: [453. 最小操作次数使数组元素相等 [TOC] # 思路 > 是我做算法做多了,我变菜了,世界的终极就是数学! # 解题方法 > 题目明确的说了,有n个数, ...
- 453. 最小移动次数使数组元素相等
453. 最小移动次数使数组元素相等 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3]输出: 3解 ...
- LeetCode 453. 最小移动次数使数组元素相等(数学)
1. 题目 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3]输出: 3 解释: 只需要3次移动(注 ...
- 【LeetCode】453. 最小操作次数使数组元素相等
题目链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/ 题目描述 给定一个长度为 n 的 非空 整数数 ...
- 453. 最小操作次数使数组元素相等
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素相等的最小操作次数. class Solution {public int minMoves(int[] ...
- 力扣453.最小操作次数使数组元素相等
题目描述 给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1.找出让数组所有元素相等的最小操作次数. 示例 输入: [1,2,3] 输出: 3 解释 只需要3次操作(注 ...
- LeetCode 453. 最小移动次数使数组元素相等
题目描述: 解法一(暴力法): class Solution { public:int minMoves(vector<int>& nums) {int res=0;int mma ...
- 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 ...
- LeetCode Minimum Moves to Equal Array Elements II
原题链接在这里:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/ 题目: Given a non-empt ...
最新文章
- 你哪来这么多事(五):职工信息插入
- 记一次网站部署遇到的问题
- [排错]运行cocos2d自带的cocos2d-test-ios工程出现错误:找不到libcocos2d.a
- 零基础学习大数据:零基础学习大数据最完整的学习路线
- 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第10章-滤波器设计
- 数据挖掘十大算法--Apriori算法
- JPA保存数据时报持久化对象异常:PersistenceException: org.hibernate.PersistentObjectException
- Golang笔记——单元测试
- java中面向对象租车问题_答答租车系统-Java面向对象的学习
- sftp api java_SFTP例子2----使用JSch实现SFTP文件传输
- quickServer介绍
- 【Xamarin报错】visual studio android 模拟器部署卡住
- 数据库触发器调用python_python批量删除数据库触发器 | 学步园
- 【Oracle】ORA-27369: job of type EXECUTABLE failed with exit code: Key has expired
- VBA基础知识———常用语句
- 入门命令5-流程跳转:goto
- 2000-2021年款雷克萨斯原厂全套维修手册+电路图资料下载
- html表格行的悬停事件,jQuery实现HTML表格隔行变色及鼠标悬停变色效果
- 一个免费识别验证码的接口
- 电脑文件管理——XYplorer
热门文章
- Visual Studio 2013 详细安装教程(安装+注册)
- Osg/OsgEarth—— 无法打开文件osgGA/MatrixManipulator错误
- Python与机器视觉(x)windows下import cv2报错dll
- 非空约束 mysql
- 音乐后台管理 歌手查询功能 ktv 1216
- 办公自动化-演练-统计日报的演练-0223
- django-新的django项目
- Python之路(第十七篇)logging模块
- 第3章 Kotlin语言基础 《Kotlin 极简教程》
- C#学习常用方法(3000)---Foreach ,in