欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    }
}