
1509。三步中最大和最小值之间的最小差异
中
给你一个整数数组 nums。
一举可以选择nums的一个元素,并将其更改为任意值.
最多执行三步后,返回nums的最大和最小值之间的最小差值.
示例1:
第一步,将 2 改为 3,nums 变为 [5,3,3,4]。 第二步,将4改为3。nums变为[5,3,3,3]。 第三步,将5改为3。nums变为[3,3,3,3]。 执行 3 次移动后,最小值和最大值之差为 3 - 3 = 0。
示例2:
第一步,将 5 改为 0,nums 变为 [1,0,0,10,14]。 在第二步中,将 10 更改为 0。nums 变为 [1,0,0,0,14]。 第三步,将14改为1。nums变为[1,0,0,0,1]。 执行 3 次移动后,最小值和最大值之差为 1 - 0 = 1。 可以证明,没有办法在3步之内使差值变为0。
示例3:
第一步,将 100 改为 7。 nums 变为 [3,7,20]。 在第二步中,将 20 更改为 7。nums 变为 [3,7,7]。 第三步,将3改为7。nums变为[7,7,7]。 执行 3 次移动后,最小值和最大值之差为 7 - 7 = 0。
限制:
解决方案:
类解决方案{
/*** @param 整数[] $nums
* @return 整数*/
函数 minDifference($nums) {
$n = 计数($nums);
// 如果数组有 4 个或更少的元素,则差异为零,因为我们可以删除除一个元素之外的所有元素。
如果($n <= 4){
返回0;
}
// 对数组进行排序,方便计算移除后的差异。
排序($nums);
// 我们考虑从开头或结尾删除 0、1、2 或 3 个元素。
// 计算差异:
// 1. 从开始处删除 3:nums[n-1] - nums[3]
// 2. 从开头删除 2,从结尾删除 1:nums[n-2] - nums[2]
// 3. 从开头删除 1,从结尾删除 2:nums[n-3] - nums[1]
// 4. 从末尾删除 3:nums[n-4] - nums[0]
$差异= [
$nums[$n - 1] - $nums[3],
$nums[$n - 2] - $nums[2],
$nums[$n - 3] - $nums[1],
$nums[$n - 4] - $nums[0]
];
// 返回最小差值。
返回最小值($差异);
}
}
联系链接
以上就是三步中最大和最小值之间的最小差异的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号