昨天去晒网了,今天来打鱼

147 阅读1分钟

学生分数的最小差值

0211.png

贴一下代码

function minimumDifference(nums: number[], k: number): number {
    if(k === 1) return 0
    let newNums = nums.sort((a, b) => { return a- b})
    let resultArr: Array<number> = []
    for(let i = 0; i <= newNums.length - k; i++){
        resultArr.push(newNums[k + i - 1] - newNums[i]);
    }
    resultArr.sort((a, b) => { return a - b})
    return resultArr[0]
};

思路:

  • 先进行排序,然后遍历排序后的数组

0211image1.png image2.png

  • 需要输出最高分和最低分的最小差值,首先得计算出差值,排列组合的方式与k值有关,不管一组有多少项,我们只需要用一组中的第一项减去最后一项就行了

0211image3.png

  • 如上图,循环遍历排序后的数组,k个单位为一组,所以i最后的取值边界要根据传入的k确定,也就是nums.length - k,每一组的最后一项减去每一组的第一项的时候,第一项好确定,就是nums[i],最后一样是根据i来取值的,即k+i-1;
  • 然后把所有组合的插值push进数组,将数组升序,返回数组的第一项即最小差值