列表

详情


2567. 修改两个元素的最小分数

给你一个下标从 0 开始的整数数组 nums 。

我们的目标是最小化 nums 的分数。你 最多 可以修改 nums 中 2 个元素的值。

请你返回修改 nums 中 至多两个 元素的值后,可以得到的 最小分数 。

|x| 表示 x 的绝对值。

 

示例 1:

输入:nums = [1,4,3]
输出:0
解释:将 nums[1] 和 nums[2] 的值改为 1 ,nums 变为 [1,1,1] 。|nums[i] - nums[j]| 的值永远为 0 ,所以我们返回 0 + 0 = 0 。

示例 2:

输入:nums = [1,4,7,8,5]
输出:3
解释:
将 nums[0] 和 nums[1] 的值变为 6 ,nums 变为 [6,6,7,8,5] 。
最小得分是 i = 0 且 j = 1 时得到的 |nums[i] - nums[j]| = |6 - 6| = 0 。
最大得分是 i = 3 且 j = 4 时得到的 |nums[i] - nums[j]| = |8 - 5| = 3 。
最大得分与最小得分之和为 3 。这是最优答案。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minimizeSum(vector<int>& nums) { } };

golang 解法, 执行用时: 76 ms, 内存消耗: 8.4 MB, 提交时间: 2023-02-21 16:25:16

func minimizeSum(a []int) int {
	sort.Ints(a)
	n := len(a)
	return min(min(a[n-3]-a[0], a[n-2]-a[1]), a[n-1]-a[2])
}

func min(a, b int) int { if a > b { return b }; return a }

python3 解法, 执行用时: 84 ms, 内存消耗: 24.4 MB, 提交时间: 2023-02-21 16:24:59

'''
修改两个数,使最小得分等于0,则最小分数就是最大分数的最小值
从小到大排序后,
1. 修改最大的两个数为nums[n-3],则最大分数等于nums[n-3]-nums[0]
2. 修改最小的一个数为nums[1], 最大的为nums[n-2], 则最大分数等于nums[n-2] - nums[1]
3. 修改两个最小的数为nums[2], 则最大分数为nums[n-1] - nums[2]
'''
class Solution:
    def minimizeSum(self, a: List[int]) -> int:
        a.sort()
        return min(a[-3] - a[0], a[-2] - a[1], a[-1] - a[2])

上一题