最近刷上了oj的算法,会陆续分享我的解题思路和方法,有更好更优思路解法欢迎交流~
题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。
输入
[4,5,1,6,2,7,3,8],4
返回值
[1,2,3,4]
show the code as follow:
import java.util.ArrayList;
import java.util.List;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
//用于存放返回数组
ArrayList<Integer> list = new ArrayList<Integer>(k);
if(k>input.length) return list ; //防止数组越界
//采用部分冒泡的做法
for(int i=1;i<=k;i++)
for(int j=0;j<=input.length-2;j++){
if(input[j]<input[j+1]){
swap(input , j ,j+1);
}
}
//依次添加到返回列表
for(int p = input.length-1;p>=input.length-k;p--){
list.add(input[p]);
}
return list;
}
//数组内部交换元素的工具方法
public void swap(int []arr,int a,int b){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp ;
}
}