leetcode1509. 三次操作后最大值与最小值的最小差
程序员文章站
2022-03-09 10:04:48
...
给你一个数组 nums ,每次操作你可以选择 nums 中的任意一个元素并将它改成任意值。
请你返回三次操作后, nums 中最大值与最小值的差的最小值。
示例 1:
输入:nums = [5,3,2,4]
输出:0
解释:将数组 [5,3,2,4] 变成 [2,2,2,2].
最大值与最小值的差为 2-2 = 0 。
代码
class Solution {
public int minDifference(int[] nums) {
Arrays.sort(nums);
int l=0,n=nums.length,r=n-1,res=Integer.MAX_VALUE;
if(n<=3) return 0;//长度小于4的数组结果都是0
for(int i=0;i<=3;i++)
//遍历所有可能,例如左边消掉0-3个数,右边对应消掉3-0个数字,选择最小的差
res= Math.min(res,Math.min(nums[r-3+i]-nums[l+i],nums[r-i]-nums[l+3-i]));
return res;
}
}