JAVA暴力解题法,通过多重for循环外加最小值替换获取到最终要返回的值。这里不再赘述。

这里有一个注意事项,就是按照直接全量for循环的最终代码运行没有问题,但是性能无法满足题目要求。 所以在for循环处理的时候注意先对数组排序,排序后,大小判断就省略的,同时在循环时不是每一个循环都是从0到结尾。注意卡下标最小范围。 如此编码完成算是完成了基础的答题要求,勉强可以及格过关了。 (同时注意第一次循环后获取到的新数组也要重新排序,否则后续的取消除逻辑不成立,会产生错误结果)

public long minimumValueAfterDispel (int[] nums) {
    // write code here
    if(nums.length<3){
        return 0L;
    }
    Arrays.sort(nums);
    long min_res = Integer.MAX_VALUE;
    for(int i=0;i<nums.length;i++){
        int numi = nums[i];
        int[] nums1 = new int[nums.length];
        for(int j=0;j<i;j++){
             nums1[j] =nums[j];
        }
        for(int j1 = i;j1<nums.length;j1++){
           nums1[j1] = nums[j1] - numi;
        }
         Arrays.sort(nums1);
        for(int k=0;k<nums1.length;k++){
            int numk = nums1[k];
            int[] nums2 = new int[nums1.length];
            long res = 0L;
            for(int l =0 ;l<k;l++){
                 res+=nums1[l];
            }
            for(int l=k;l<nums2.length;l++){                                     
                res+=nums1[l] - numk;
            }
            if(res<min_res){
                min_res = res;
            }
        }
    }
    return min_res;
}