Leetcode之 最小的k個數

2021-10-04 04:39:13 字數 465 閱讀 4945

輸入整數陣列 arr ,找出其中最小的 k 個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。

雜湊表,題目中給定arr.length<10000,arr[i]<10000,則建立乙個hash陣列記錄每個數字出現的次數,之後從hash[0]開始輸出,若hash[i]>0,則迴圈輸出直至hash[i]=0 或 k=0

堆的思想

class solution 

count++;

}return res;

}};

方法二:

class solution 

priority_queueh;

for(int num : arr)elseelse}}

while(!h.empty())

return res;

}};

Leetcode 最小K個數

思路 基於快排改進 選取arr 0 作為基準值,tmp arr 0 排序後,返回tmp的下標index 此時,arr index 左側的值都小於tmp,右側的值都大於tmp。如果k index,那麼從起始點0到下標index 1的值就為最小的k個數,如果k index,說明k個數在區間 0,inde...

面試題之最小K個數

最小 最大k個數 是面試容易提及的其中乙個問題,此處用快排思路解決。思路 因為當選取的樞紐元等於k時,樞紐元左邊的序列元素必定小於k,右邊的序列元素必定大於k。儘管序列內部是無序的,但此時結果已符合題意。為避免產生多餘的排序工作,我們只需要在遞迴的時候分歧選擇最接近k的方向即可,一旦等於k就停止遞迴...

每日一練之最小的k個數

直接排序,然後取前k小資料。vector int getleastnumbers solution vector int input,int k return res 時間複雜度 o nlongn 空間複雜度 o 1 建立乙個容量為k的大根堆的優先佇列 priority queue 預設大根堆 遍歷...