學生分數的最小差值

2022-09-20 20:06:08 字數 891 閱讀 8241

leetcode

給你乙個 下標從 0 開始 的整數陣列 nums ,其中 nums[i] 表示第 i 名學生的分數。另給你乙個整數 k 。

從陣列中選出任意 k 名學生的分數,使這 k 個分數間 最高分 和 最低分 的 差值 達到 最小化 。

返回可能的 最小差值 。

示例 1:

輸入:nums = [90], k = 1

輸出:0

解釋:選出 1 名學生的分數,僅有 1 種方法:

[90] 最高分和最低分之間的差值是 90 - 90 = 0

可能的最小差值是 0

示例 2:

輸入:nums = [9,4,1,7], k = 2

輸出:2

解釋:選出 2 名學生的分數,有 6 種方法:

1 <= k <= nums.length <= 1000

0 <= nums[i] <= 105

從 n 個元素裡找 k 個,使得 k 個元素最大差值最小時間複雜度o(nlogn)

這 k 個元素必然是有序陣列中(排序後)的連續段。反證法,若最佳 k 個選擇不是連續段,能夠調整為連續段,結果不會變差。

因此我們可以先對 nums 進行排序,然後掃瞄所有大小為 k 的視窗,直接找到答案,而無須使用「二分」

public static int minimumdifference(int nums, int k) 

return ans;

}

CCF CSP 最小差值

最小差值 試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...

CCF 最小差值

試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個...

20171201 最小差值

問題描述 試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...