pair int,int 排序 優先佇列過載排序

2021-10-10 08:59:07 字數 1569 閱讀 4604

最接近原點的 k 個點

題目鏈結

我們有乙個由平面上的點組成的列表 points。需要從中找出 k 個距離原點 (0, 0) 最近的點。

(這裡,平面上兩點之間的距離是歐幾里德距離。)

你可以按任何順序返回答案。除了點座標的順序之外,答案確保是唯一的。

示例

輸入:points = [[1,3],[-2,2]], k = 1

輸出:[[-2,2]]

解釋:

(1, 3) 和原點之間的距離為 sqrt(10),

(-2, 2) 和原點之間的距離為 sqrt(8),

由於 sqrt(8) < sqrt(10),(-2, 2) 離原點更近。

我們只需要距離原點最近的 k = 1 個點,所以答案就是 [[-2,2]]

方法一: 過載優先佇列

class

solution};

vectorint>>

kclosest

(vectorint>>

& points,

int k)

} vectorint>>

result

(k);

// 把佇列裡元素放入陣列

for(

int i =

0; i < k; i++

)return result;}}

;

方法二: 打包過載pair

class

solution

vectorint>>

kclosest

(vectorint>>

& points,

int k)

sort

(vec.

begin()

,vec.

end(

),cmp)

;//公升序排序

vectorint>>ans;

for(

int j=

0;j)return ans;}}

;

通用大小堆

優先佇列的格式

priority_queuq

;//預設的情況是priority_queue, greater>,即大頂堆,排序顯示的從小到大.

struct cmp1};

priority_queueint,

int>

, vectorint,

int>>

, cmp1> mp;

//這樣在執行mp.push(make_pair(nums[i], nums1[j]));時就會自動的就行排序.

//使用優先佇列來模擬堆的執行在c++中是很方便的.

//堆的函式

/* ma.pop();

ma.top();

ma.empty();

ma.size();

ma.emplace();

ma.push();

*/

hdu1285確定比賽名次 拓撲排序 優先佇列

傳送門 第一道拓撲排序題 每次刪除入度為0的點,並輸出 這題要求隊名小的排前面,所以要用到過載的優先佇列 1 include2 using namespace std 3 priority queue,greater q 優先佇列預設是值越大,優先順序越高,這裡過載了,公升序排列 4 5void t...

再次學習priority queue優先佇列

這周四導師的演算法課就要考試,真心感覺自己沒學好,在看貪心策略的時候提到了哈夫曼編碼,而哈夫曼編碼是借助優先佇列實現的。對於優先佇列並不熟悉的我,理所當然的應該回顧複習乙個priority queue,也就是優先佇列!下面主要是根據 c 標準程式庫 中的內容整理而得到。class priority ...

合併果實 priority queue(優先佇列)

today is a good day!蒟蒻筆記再度更新之 c 優先佇列 priority queue 優先佇列跟普通的佇列唯一的差別呢實際上就在於,他能夠根據所給的某種型別的優先順序規則在訪問之前進行一定的排序工作。具體用途的話 公升序佇列 priority queue greater int q...