JAVA练习55-最小的k个数
生活随笔
收集整理的這篇文章主要介紹了
JAVA练习55-最小的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]
限制:
- 0 <= k <= arr.length <= 10000
- 0 <= arr[i]?<= 10000
分析:
方法:快速排序優化
這道題尋找最小的 k 個數,只要對原數組進行排序,然后返回前 k 個數即可。但是既然是找最小的k 個數,那么只要知道這 k 個數是那些就可以了,這 k 個數 和其他數就不需要排序,因為快速排序有個二分的特點,即分開的兩個部分,左邊的數一定小于右邊的數,因此我們可以對快排做個優化,如果 k 大于分開點,那么左邊的就不用排序,如果 k 小于分開點,那么右邊的就不用排序。
時間復雜度:O(n)
空間復雜度:O(log n)
題目來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof
總結
以上是生活随笔為你收集整理的JAVA练习55-最小的k个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA- Jersey使用示例
- 下一篇: loadrunner下载地址