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

    一、题目

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

    二、解法

     1 import java.util.ArrayList;
     2 public class Solution {
     3     public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {
     4         // 运行时间:35ms 占用内存:503k
     5         ArrayList<Integer> minNs = new ArrayList<Integer>();
     6         if (k == 0 || k > input.length)
     7             return minNs;
     8         int[] m = new int[k];
     9         // 先把前k个存储到结果
    10         for (int j = 0; j < k; j++) {
    11             m[j] = input[j];
    12         }
    13         int maxIndex = 0;// 最大下标
    14         boolean findMax = true;// 默认每次都要找到最大的
    15         for (int i = k; i < input.length; i++) {
    16            if(findMax)
    17              maxIndex = 0;
    18             // 开始比较,从第k个开始,每次找最大的替换出来
    19             
    20                 for (int d = 1; d < k; d++) {
    21                     if (m[d] > m[maxIndex]) {
    22                         maxIndex = d;
    23                     }
    24                 
    25             }
    26             // 找到后 比较 如果当前值input[k]比 m中的最大值还小,那么替换
    27             if (input[i] < m[maxIndex]) {
    28                 m[maxIndex] = input[i];
    29                 findMax = true;
    30             }else {
    31                 findMax = false;
    32             }
    33         }
    34         for (int i = 0; i < k; i++) {
    35             // 添加到minNs中
    36             minNs.add(m[i]);
    37         }
    38         return minNs;
    39     }   
    40 }
  • 相关阅读:
    Spring Boot 7:配置文件信息读取
    Spring Boot 6:自定义filter
    Spring AOP:Java动态代理和CGlib
    Spring AOP:概念
    设计模式(二)---策略模式
    设计模式(一)--装饰模式
    java并发编程实战笔记
    剑指offer java -查找旋转数组的最小数字
    读书计划
    协议初学
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7453258.html
Copyright © 2011-2022 走看看