学生分数的最小差值
贴一下代码
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]
};
思路:
- 先进行排序,然后遍历排序后的数组
- 需要输出最高分和最低分的最小差值,首先得计算出差值,排列组合的方式与k值有关,不管一组有多少项,我们只需要用一组中的第一项减去最后一项就行了
- 如上图,循环遍历排序后的数组,k个单位为一组,所以i最后的取值边界要根据传入的k确定,也就是nums.length - k,每一组的最后一项减去每一组的第一项的时候,第一项好确定,就是nums[i],最后一样是根据i来取值的,即k+i-1;
- 然后把所有组合的插值push进数组,将数组升序,返回数组的第一项即最小差值