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

原题链接:Leetcode 453. minimum moves to equal array elements

Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal.

In one move, you can increment n - 1 elements of the array by 1.

Example 1:

Input: nums = [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]

Example 2:

Input: nums = [1,1,1]
Output: 0

Constraints:

  • n == nums.length
  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • The answer is guaranteed to fit in a 32-bit integer.

题目大意:

给了一个长度为n的数组 nums ,每次操作能使其中的n-1个元素加1,问做多需要多少次数能够使得所有元素相等

方法一:模拟

思路:

转换思路:每次使得n-1个元素加1,等效为使得一个元素减1
那么只要找到值最小的元素,合计一下其他元素减到最小值的步骤总和即可。
需要的操作次数和题目要求在值上是相等的。

C++ 代码:

class Solution {
public:int minMoves(vector<int>& nums) {// 找到数组中最小值int min_ = *min_element(nums.begin(), nums.end());int ans = 0;for(auto num : nums){ans += num - min_;}return ans;}
};

复杂度分析:

  • 时间复杂度:O(n),先找出最小值,然后遍历一遍合计次数
  • 空间复杂度:O(1)

补充:C++求vector容器中的最大值(最小值)及其位置

#include <vector>
#include <algorithm>vector<int> a = {2, 4, 6, 7, 1, 0, 8, 9, 5, 3};// 最大值最小值的位置
auto max_pos = max_element(a.begin(), a.end());
auto min_pos = min_element(a.begin(), a.end());// 最大值和最小值
int max_val = *max_element(a.begin(), a.end());
int min_val = *min_element(a.begin(), a.end());

也可以用于求普通数组:

int a[] = {1, 2, 3, 4, 5, 6};
int max_val = *max_element(a, a+6);
int min_val = *min_element(a, a+6);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】enumerate函数的使用方法,小白一看就懂

enumerate函数的使用方法&#xff1a; season[‘a’,‘b’,‘c’,‘d’] for i in enumerate(season): print(i) season[‘a’,‘b’,‘c’,‘d’] for i,eliment in enumerate(season): print(i,eliment) 输出结果为&#xff1a; 练习题&#xff1a; 2.给出10个学生姓名…

5. C++ 局部静态变量在什么时候分配内存和初始化?

C局部静态变量在什么时候分配内存和初始化&#xff1f; 对于C语言的全局和静态变量&#xff0c;不管是否被初始化&#xff0c;其内存空间都是全局的&#xff1b;如果初始化&#xff0c;那么初始化发生在任何代码执行之前&#xff0c;属于编译期初始化。由于内置变量无须资源释…

从0到1:校园生活圈小程序开发笔记(一)

可行性研究 校园生活圈小程序是一种面向大学或学院校园的社交平台&#xff0c;旨在为校园内的师生提供交流、分享、互助和信息发布等功能。 为校园内的师生提供一个便捷的平台&#xff0c;帮助他们更好地了解校园生活、参与校园活动、交流学习和共享资源。 功能分解 公告资讯…

力扣HOT100 - 42. 接雨水

解题思路&#xff1a; 动态规划 感觉不是很好想 class Solution {public int trap(int[] height) {int n height.length;if (n 0) return 0;int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i…

JS加密解密之应用如何保存到桌面书签

前言 事情起因是这样的&#xff0c;有个客户解密了一个js&#xff0c;然后又看不懂里边的一些逻辑&#xff0c;想知道它是如何自动拉起谷歌浏览器和如何保存应用到书签的&#xff0c;以及如何下载应用的。继而诞生了这篇文章&#xff0c;讲解一下他的基本原理。 渐进式Web应用…

docker使用教程

寒假用了docker 2个月没用 结果还重新安装docker 忘了怎么用 为了免得以后忘写下下面内容 # If you dont have a docker installed, youll need to install docker curl -s https://get.docker.com/ | sh # Use pip to install docker-compose pip install docker-compose…

【力扣hot100】207 课程表(c++、python)解析

相关题目&#xff1a; 210 课程表2 【力扣hot100】207 课程表&#xff08;c、python&#xff09;解析 1.官方题解&#xff1a;1.1深搜c版本python版本 1.2广搜c版本 1.官方题解&#xff1a; 这是一题经典的「拓扑排序」问题 给定一个包含 n 个节点的有向图 G&#xff0c;我们…

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

idea-创建java8的springboot项目

现在使用IDEA创建 Spring Boot 项目&#xff0c;jdk 版本最低要求为 17。Spring Boot 官方在全力维护 3.x 版本&#xff0c;而 Spring Boot 3.x 对 jdk 版本的最低要求为17。 如果需要继续使用 jdk8&#xff0c;则需要修改 Server URL &#xff0c;改成&#xff1a;https://st…

解决 vue activited 无效问题

当对页面APP.vue组件router-view标签使用了keep-alive之后在组件activated状态时不会发送请求&#xff0c;这时需要使用 keep-alive标签的 exclude属性排除需要重新发送请求的组件。需要注意exclude的值要和组件本身的name值要一致&#xff0c;如果不一致就会不生效。目前我出现…

Linux服务器安装部署Harbor

Linux服务器安装部署Harbor详细说明文档&#xff1a;https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Docker/%E5%AE%89%E8%A3%85Harbor.md ps&#xff1a;如果觉得作者写的还行&#xff0c;能够满足您的需求&#xff0c;请给作者的开源项目start。如果觉得文章存…

软件工程---软件设计模式和软件体系结构

软件设计模式 软件设计模式是针对解决特定问题的通用解决方案的指导性原则和规范。设计模式通常关注如何在代码级别解决问题&#xff0c;提供了一种在软件设计中反复使用的经验性方法。设计模式通过将问题和解决方案进行抽象&#xff0c;帮助开发人员更好地理解和应用面向对象…

C++运算符重载中的引用返回

文章目录 引言原因1.为了支持链式调用2.避免不必要的对象创建和复制3.保持语义一致性 引言 在C编程语言中&#xff0c;运算符重载是一项强大的特性&#xff0c;它允许程序员为自定义类型重新定义或重载已有的运算符&#xff0c;从而使得这些类型能够像内置类型一样使用运算符。…

离线linux服务器安装mysql8

本文的服务器环境&#xff1a;openEuler毛坯版的&#xff0c;很多常用的指令都没有预装&#xff0c;比如rpm、tar等等&#xff0c;没有网络坏境&#xff0c;需要自己手动配置本地yum仓库&#xff0c;安装相关指令 1、检查服务器是否已经安装了MySQL 1.1、查询mysql以安装的相关…

14、Spring CLI,命令行的start.spring.io

Initializr 你可以使用 Spring CLI 作为 github.com/spring-io/initializr 的客户端,默认情况下使用 start.spring.io。Shell 风格的项目创建模拟了从 UI 创建项目的方式。 新建命令(New Command) 要使用 new 命令,在命令行上定义选项。然后,如果 Initializr 需要更多信…

C语言编程练习题:第一期

练习题1&#xff1a; 编写一个程序&#xff0c;计算并输出两个整数之和。 #include <stdio.h>int main() {int num1, num2;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);int sum num1 num2;printf("The sum of %d…

QT学习之UDP

#include <QUdpSocket>// UDP 接受的数据char buf[1024] { 0 };// 接受到数据的标识bool bRecvFlag false;//Udp服务器QUdpSocket* mSocket;//通信的ip和端口&#xff0c;用于获取发送者的 IP 和端口QHostAddress sendAddr; // 本机QHostAddress recAddr; // 设备ipqu…

使用Docker本地搭建蚂蚁笔记并实现无公网IP远程访问

文章目录 1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装cpolar内网穿透4. 固定Leanote蚂蚁笔记公网地址 本篇文章介绍如何使用Docker部署Leanote蚂蚁笔记&#xff0c;并且结合cpolar内网穿透实现公网远程访问本地笔记编辑并制作个人博客等。 Leanote 蚂蚁笔记是一款云…

Echarts 仪表盘

1、效果图 2、代码 createTenantChartOne(){var myChart1 this.$echarts.init(document.getElementById(tenant-chart-1));var dataArr 82;var title 仪表盘;let option {graphic: {type: text,left: center,top: 85%,style: {text: title,textAlign: center,//居中对齐fi…

datasophon安装doris报错

报错信息如下 fe/bin/status_fe.sh: line 50: [: -eq: unary operator expected http request failed, return value is: fe is not ready原因是status_fe.sh文件存在问题 如 ... status(){if [ -f $pid ]; thenARGET_