我是靠谱客的博主 洁净啤酒,这篇文章主要介绍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、使数组中所有元素相等内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部