輸入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 ...