Subset with Minimal Difference of Max and Min

题目:
给一个integer的array和size,然后要返回一个subset是的该subset里面的(max - min)是最小的。

解题思路:
这道题首先要对input的array进行排序,然后用size为给定size的window来扫一遍同时更新结果。

代码:


public class SubsetwithMinimalDifferenceofMaxandMin {

    public int[] findSubset(int[] nums, int size){
        if(nums == null || nums.length < size){
            return new int[0];
        }
        Arrays.sort(nums);
        int[] rst = new int[size];
        int index = 0;
        int min = Integer.MAX_VALUE;
        for(int i = 0; i <= nums.length - size; i++){
            if(nums[i + size - 1] - nums[i] < min){
                index = i;
            }
        }
        int i = 0;
        while(i <= size - 1){
            rst[i++] = nums[index++];
        }
        return rst;
    }

    public static void main(String[] args){
        int[] nums = {9, 15, 14, 3};
        SubsetwithMinimalDifferenceofMaxandMin subsetwithMinimalDifferenceofMaxandMin = new SubsetwithMinimalDifferenceofMaxandMin();
        int[] rst = subsetwithMinimalDifferenceofMaxandMin.findSubset(nums, 3);
        System.out.println(Arrays.toString(rst));
    }

}

Comments

Popular Posts