leetcode
給你乙個 下標從 0 開始 的整數陣列 nums ,其中 nums[i] 表示第 i 名學生的分數。另給你乙個整數 k 。示例 2:從陣列中選出任意 k 名學生的分數,使這 k 個分數間 最高分 和 最低分 的 差值 達到 最小化 。
返回可能的 最小差值 。
示例 1:
輸入:nums = [90], k = 1
輸出:0
解釋:選出 1 名學生的分數,僅有 1 種方法:
[90] 最高分和最低分之間的差值是 90 - 90 = 0
可能的最小差值是 0
輸入: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個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...