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;
        }
    }
  • 相关阅读:
    jquery 选择器总结
    jQuery 添加元素和删除元素
    jQuery 操作
    jquery 事件
    jQuery对象与DOM对象
    jquery 在页面中三种写法
    CSS3制作立体导航
    开发常用技巧之css字体编码
    c语言快速入门3
    c语言快速入门2
  • 原文地址:https://www.cnblogs.com/haimishasha/p/11587999.html
Copyright © 2011-2022 走看看