zoukankan      html  css  js  c++  java
  • 最小的K个数

    题目描述

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
     
     
    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
            ArrayList<Integer> list = new ArrayList<>();
            if(k>input.length || k<=0)return list;
            findKthSmallest(input, k);
            for(int i = 0; i < k; i++) {
                list.add(input[i]);
            }
            return list;
        }
        public void findKthSmallest(int[] input, int k) {
            int l = 0;
            int r = input.length-1;
            while(l<r) {
                int j = partition(input, l , r);
                if(j == k) break;
                else if(j < k) l = j+1;
                else r = j-1;
            }
        }
        public int partition(int[] input, int start, int end) {
            int p = start-1;
            int i = start;
            for(; i < end; i++) {
                if(input[i]<input[end]) {
                    p=p+1;
                    swap(input, p, i);
                }
            }
            p=p+1;
            swap(input, p, end);
            return p;
        }
        public void swap(int[] input, int i, int j) {
            int temp = input[i];
            input[i] = input[j];
            input[j] = temp;
        }
    }
  • 相关阅读:
    android 如何在手机上 安装两个同样的app
    Ubuntu 16.04 安装Gitlab
    VScode开发C++常用插件
    过滤text字段为空的数据
    ES标签搜索并解决评分排序问题
    3
    2
    1
    9
    Maven3种打包方式
  • 原文地址:https://www.cnblogs.com/yihangZhou/p/10473509.html
Copyright © 2011-2022 走看看