栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022.1.18 LeetCode总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022.1.18 LeetCode总结

文章目录

一、今日刷题


一、今日刷题

第一部分:数组 – 第453题
跳转LeetCode

给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。

示例 1:

输入:nums = [1,2,3]
输出:3
解释:
只需要3次操作(注意每次操作会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
示例 2:

输入:nums = [1,1,1]
输出:0


答案代码:
因为只需要找出让数组所有元素相等的最小操作次数,所以我们不需要考虑数组中各个元素的绝对大小,即不需要真正算出数组中所有元素相等时的元素值,只需要考虑数组中元素相对大小的变化即可。

因此,每次操作既可以理解为使 n-1n−1 个元素增加 11,也可以理解使 11 个元素减少 11。显然,后者更利于我们的计算。

于是,要计算让数组中所有元素相等的操作数,我们只需要计算将数组中所有元素都减少到数组中元素最小值所需的操作数

import java.util.Arrays;


public class MinMoves {
	public static void main(String[] args) {
		int[] nums = {1,2,3};
		int result = minMoves(nums);
		System.out.println(result);
	}

	public static int minMoves(int[] nums) {
		int minNumber = Arrays.stream(nums).min().getAsInt();
		int res = 0;
		for (int num : nums) {
			res += num - minNumber;
		}
		return res;
	}
}


这个题标的是简单题,但第一次做,思路上完全没有想法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号