
2026-03-25:最小操作次数使数组元素相等Ⅲ。用go语言,给你一个整数数组 nums。
你可以进行如下操作:每次选择数组中的某一个位置 i,把该元素 nums[i] 的值增加 1。
目标是:经过若干次操作后,让数组里所有元素都变成同一个相同的数。
问:为了使所有元素相等,所需的最少操作次数是多少?
1 <= nums.length <= 100。
1 <= nums[i] <= 100。
输入: nums = [2,1,3]。
输出: 3。
解释:
使所有元素相等的操作如下:
将 nums[0] = 2 增加 1, 变为 3。
将 nums[1] = 1 增加 1, 变为 2。
将 nums[1] = 2 增加 1, 变为 3。
现在,nums 中的所有元素都等于 3。最小总操作次数为 3。
题目来自力扣3736。
数组是 [2,1,3],三个数字分别是2、1、3,其中最大值是3。 这就是我们要把所有数字都变成的目标数。
数组元素:2 + 1 + 3 = 总和为6。
数组长度是3(一共3个数字),最大值是3, 所以 3 × 3 = 9。 这个数值的含义:如果数组里3个数字全都是最大值3,总和就是9。
用「全是最大值的总和」减去「原数组的总和」,差值就是总操作次数: 9 - 6 = 3。
n成正比;.
package main
import (
"fmt"
"slices"
)
func minMoves(nums []int)int {
ans := slices.Max(nums) * len(nums)
for _, x := range nums {
ans -= x
}
return ans
}
func main() {
nums := []int{2, 1, 3}
result := minMoves(nums)
fmt.Println(result)
}

.
# -*-coding:utf-8-*-
from typing import List
def minMoves(nums: List[int]) -> int:
ans = max(nums) * len(nums)
for x in nums:
ans -= x
return ans
def main():
nums = [2, 1, 3]
result = minMoves(nums)
print(result)
if __name__ == "__main__":
main()
.
#include <iostream>
#include <vector>
#include <algorithm>
int minMoves(std::vector<int>& nums) {
int maxVal = *std::max_element(nums.begin(), nums.end());
int ans = maxVal * nums.size();
for (int x : nums) {
ans -= x;
}
return ans;
}
int main() {
std::vector<int> nums = {2, 1, 3};
int result = minMoves(nums);
std::cout << result << std::endl;
return0;
}

·
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。
·