40 最小的K個數

2021-10-02 15:50:39 字數 883 閱讀 8014

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

通過快速排序,每次確定基準資料的位置,根據快速排序的特性,位置左側的資料均小於基準資料,位置右側的資料均大於資料,直至該位置等於k-1時,左邊的資料恰好是最小的k個數。**如下:

public arraylist

getleastnumbers_solution

(int

input,

int k)

else

}for

(int i=

0;i)return list;

}public

intgetposition

(int

nums,

int low,

int high)

nums[low]

=nums[high]

;while

(lownums[high]

=nums[low];}

nums[high]

=temp;

return low;

}

解法二:利用基於紅黑樹的容器。**如下:

public arraylist

getleastnumbers_solution

(int

input,

int k)

else}}

iterator

iterator=set.

iterator()

;while

(iterator.

hasnext()

)return list;

}

40 最小的k個數

輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1 輸出 0 限制 分情況討論 1 當陣列的大小較...

40 最小的k個數

輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1 輸出 0 class solution que...

第40題 最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,法1,std sort。快排onlogn class solution return ret 法2.partiton on include using namespace std ...