zoukankan      html  css  js  c++  java
  • 小米笔试题:无序数组中最小的k个数

     题目描述

    链接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative
    来源:牛客网
    
    无序数组中最小的k个数
    对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致。
    给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数。
    
    测试样例:
    [1,2,4,3],4,2
    返回:[1,2]

    代码

    需要保留K个较小的元素,可以删除n-k个较大的元素。

    public class KthNumbers {
        public static int[] findKthNumbers(int[] A, int n, int k) {
            int delNum = n - k;// 要删除的元素数量
            int len = A.length;// 实际数组中的元素个数
            while (delNum > 0) {
                // 找到当前数组中最大的元素
                int maxIndex = 0;// 记录最大元素的下标
                int i;
                for (i = 1; i < len; i++) {// 寻找最大元素并记录其在数组中的下标
                    if (A[maxIndex] < A[i]) {
                        maxIndex = i;
                    }
                }
                // 删除当前最大元素即maxIndex
                for (int j = maxIndex; j < len - 1; j++) {
                    A[j] = A[j + 1];
                }
                len--;
                delNum--;
            } 
    
            int result[] = new int[k];
            for (int i = 0; i < k; i++) {
                result[i] = A[i];
            }
            return result;
        }
    }
  • 相关阅读:
    recess----2.Controller里面取用request信息
    recess----1.第一个APP-helloRecess
    Introducing MVC
    IFA Basics
    Why do Antennas Radiate?
    [JSP]JSP 简介
    [Spring]04_最小化Spring XML配置
    [设计模式]创建型模式
    [设计模式]原型模式
    [设计模式]建造者模式
  • 原文地址:https://www.cnblogs.com/haimishasha/p/11587999.html
Copyright © 2011-2022 走看看