劍指offer:輸入n個整數,找出其中最小的K個數。
劍指offer演算法題
陣列 高階演算法
題目描述
輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。
題目分析
方法一 直接排序
直接使用氣泡排序,這裡提高效率的方法是我們按照從小到大,只排前K個數。這樣可以提高效率。
下面是Java程式碼
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> list = new ArrayList<>();
if(input.length < k){
return list;
}
list = Maopao(input,k);
return list;
}
private ArrayList<Integer> Maopao(int [] input,int k){
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0 ; i<k;i++){
for(int j = input.length-1 ;j >= i+1 ;j--){
if(input[j]<input[j-1]){
int tmp = input[j-1];
input[j-1] = input[j];
input[j] = tmp;
}
}
list.add(input[i]);
}
return list;
}
}
方法二 TODO
相關文章
- 劍指Offer-31-最小的K個數
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 輸入十個整數,輸出其中質數
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 輸入N,再輸入N個數,N
- 輸入一個整數,返回這個整數的位數
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 劍指offer——連結串列中倒數第k個結點
- LeetCode題解:劍指 Offer 40. 最小的k個數,二叉堆,JavaScript,詳細註釋LeetCodeJavaScript
- 劍指offer——把陣列排成最小的數C++陣列C++
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 劍指Offer-34-把陣列排成最小的數陣列
- 【劍指offer】二進位制中1的個數
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 輸入10個整數,求最大數
- 求最小k個數
- 給定一個n,輸出從1到n的整數
- 【Algorithm】《劍指offer》面試題32----從1到n整數中1出現的次數Go面試題
- 力扣 - 劍指 Offer 45. 把陣列排成最小的數力扣陣列
- 3516 求n個整數的最小值 迴圈結構
- 統計整數區間[N,M](N,M<100000)中所以非偶數的合數個數,並輸出這個數。
- 【劍指 Offer 】17. 列印從1到最大的n位數
- 劍指offer | 17. 列印從1到最大的n位數
- 劍指offer——把字串轉換成整數C++字串C++
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 劍指offer:給定一棵二叉搜尋樹,請找出其中的第k小的結點。
- 力扣 - 劍指 Offer 22. 連結串列中倒數第k個節點力扣
- 劍指 Offer 列印從1到最大n位數c++C++
- 指標-n個數的排序指標排序
- 劍指 Offer 15. 二進位制中1的個數
- 劍指Offer 表示數值的字串字串
- JZ-029-最小的 K 個數
- 3069 求n個整數的和
- 【JAVA習題六】輸入兩個正整數m和n,求其最大公約數Java