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;
        }
    }
  • 相关阅读:
    从hadoop框架与MapReduce模式中谈海量数据处理
    Hadoop
    Clone Graph
    Gas Station
    ZigZag Conversion
    String to Integer (atoi)
    Palindrome Number
    Container With Most Water
    Longest Common Prefix
    求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
  • 原文地址:https://www.cnblogs.com/haimishasha/p/11587999.html
Copyright © 2011-2022 走看看