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号