我是靠谱客的博主 洁净啤酒,最近开发中收集的这篇文章主要介绍leetcode-1551、使数组中所有元素相等的最小操作数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述:存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n )。一次操作中,你可以选出两个下标,记作 x 和 y ( 0 <= x, y < n )并使 arr[x] 减去 1 、arr[y] 加上 1 (即 arr[x] -=1 且 arr[y] += 1 )。最终的目标是使数组中的所有元素都 相等 。题目测试用例将会 保证 :在执行若干步操作后,数组中的所有元素最终可以全部相等。给你一个整数 n,即数组的长度。请你返回使数组 arr 中所有元素相等所需的 最小操作数 。
代码:

import java.util.Scanner;
public class MinOperations {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
MinOperations minOperations = new MinOperations();
minOperations.minOpterations(n);
}
public int minOpterations(int n) {
int cnt = 0;
int mid = (1 + 2 * n - 1) / 2;
for (int i = n; i >= 0; --i) {
if (2 * i - 1 > mid) {
cnt += (2 * i - 1 - mid);
}
}
System.out.println(cnt);
return cnt;
}
}

解析
1、求出中间数字mid的大小,即mid=(1+2n-1)/2;
2、统计第i个数组2
i-1大于mid时,将其变为mid所需的操作数(2*i-1-mid)的次数,然后求和。

最后

以上就是洁净啤酒为你收集整理的leetcode-1551、使数组中所有元素相等的最小操作数的全部内容,希望文章能够帮你解决leetcode-1551、使数组中所有元素相等的最小操作数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部