乙個已排序好的表 a,其包含 1 和其他一些素數. 當列表中的每乙個 p那麼第 k 個最小的分數是多少呢? 以整數陣列的形式返回你的答案, 這裡 answer[0] = p 且 answer[1] = q.
示例:輸入: a = [1, 2, 3, 5], k = 3
輸出: [2, 5]
解釋:已構造好的分數,排序後如下所示:
1/5, 1/3, 2/5, 1/2, 3/5, 2/3.
很明顯第三個最小的分數是 2/5.
輸入: a = [1, 7], k = 1
輸出: [1, 7]
注意:a 長度的取值範圍在 2 — 2000.
每個 a[i] 的值在 1 —30000.
k 取值範圍為 1 —a.length * (a.length - 1) / 2
二分法:
先找出恰好大於k個組合的分數的乙個值。
再找出最接近這個值的分數組合。
class
solution
return res;
} vector<
int>
kthsmallestprimefraction
(vector<
int>
& a,
int k)
else
if(count > k)
else
}int p =1;
int q = a.
back()
;for
(int i =
0; i < a.
size()
; i++)}
} vector<
int> ans;
ans.
push_back
(p);
ans.
push_back
(q);
return ans;}}
;
第5題 查詢最小的K個元素
第5題 輸入n個整數,輸出其中最小的k個。陣列 例如輸入1,2,3,4,5,6,7,8 這8個數字,則最小的4個數字為1,2,3,4 此處就是排序 氣泡排序 快排 選擇排序等,擇一進行修改應該就可以了。package test005 created by cq on 2015 3 30.第5題 輸入...
求陣列中第k個最小數
一 問題描述 給定乙個陣列,陣列中的資料無序,在乙個陣列中找出其第k個最小的數,例如對於陣列x,x 則其第2個最小的數為2。二 解題思路 本演算法跟快排的思想相似,首先在陣列中選取乙個數centre作為樞紐,將比centre小的數,放到centre的前面將比centre大的數,放到centre的後面...
求最小的第K個數
演算法分析 除了排序。大小堆,還可以用排序的演算法。我們每次以乙個基準元素進行快速排序,排序完之後,看這個基準元素的位置是否為k位置,如果大於k,那麼說明第k 小的元素在基準元素的左邊。然後從右邊選取基準元素進行快排。如果小於k,演算法相反 include include include inclu...