剑指offer:最小的k个数

你。 提交于 2020-03-04 06:39:28

题目:

源码:
方法一:

import java.util.*;
public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> list = new ArrayList<>();
        if (k > input.length || k < 1) {
            return list;
        }
        Arrays.sort(input);
        for (int i = 0; i < k; i++) {
            list.add(input[i]);
        }
        return list;
    }
}

方法二:可以利用选择、插入、快速等等排序方法,先把数组进行排序,然后进行 k 前个元素的添加返回

以下方法是利用冒泡排序:

import java.util.*;
public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> list = new ArrayList<>();
        if (k > input.length || k < 1) {
            return list;
        }
        for (int bound = 0; bound < input.length; bound++) {
            for (int cur = input.length - 1; cur > bound; cur--) {
                if (input[cur - 1] > input[cur]) {
                    swap(input, cur - 1, cur);
                }
            }
        }
        for (int i = 0; i < k; i++) {
            list.add(input[i]);
        }
        return list;
    }
    public void swap(int[] arr, int x, int y) {
        int tmp = arr[x];
        arr[x] = arr[y];
        arr[y] = tmp;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!