【剑指offer】-最小K个数-28/67

简介: 【剑指offer】-最小K个数-28/67

一、题目描述

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

二、题目分析

  1. 典型的排序题目,直接使用-快速排序
  2. 注意一下,input数组的空值和input.length的值与K值的比较

三、题目代码

package offer;
import java.util.ArrayList;
/*
 * 最小K个数
 */
public class Test28 {
  static ArrayList<Integer> list = new ArrayList<Integer>();
  public static void main(String[] args) {
    Test28 test28 = new Test28();
    int[] input = new int[] { 4, 5, 1, 6, 2, 7, 3, 8 };
    list = test28.GetLeastNumbers_Solution(input, 4);
    System.out.println(list);
  }
  public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {
    if (input.length == 0 || input.length < k) {
      return list;
    }
    sort(input, 0, input.length - 1);
    for (int i = 0; i < k; i++) {
      list.add(input[i]);
    }
    return list;
  }
  void sort(int[] input, int start, int end) {
    if (start > end) {
      return;
    }
    int i = start;
    int j = end;
    int key = input[i];
    while (i < j) {
      while (i < j && input[j] >= key) {
        j--;
      }
      input[i] = input[j];
      while (i < j && input[i] <= key) {
        i++;
      }
      input[j] = input[i];
    }
    input[i] = key;
    sort(input, start, i - 1);
    sort(input, i + 1, end);
  }
}


相关文章
|
4月前
|
自然语言处理 IDE 开发工具
Xcode 26.1.1 (17B100) 发布 - Apple 平台 IDE
Xcode 26.1.1 (17B100) 发布 - Apple 平台 IDE
293 1
|
5月前
|
存储 SQL 安全
全球数据安全新范式:阿里云DAS+DTS为企业打造合规出海“护航舰”
阿里云DAS与DTS推出覆盖数据跨境、实时脱敏、加密保护、合规审计的一站式安全解决方案,助力企业高效应对全球合规风险。
|
6月前
|
存储 消息中间件 缓存
Redis 简介:打造快速数据存储的利器
Redis 是一款开源的内存数据结构服务器,支持字符串、哈希、列表等多种数据结构,具备高性能、持久化、高可用及分布式特性,适用于缓存、会话管理、实时统计等场景。
|
数据安全/隐私保护
基于PID控制器的车辆控制系统simulink建模与仿真
本课题基于MATLAB2022a的Simulink平台,构建了车辆控制系统的PID控制器模型并进行仿真。PID控制器通过比例、积分、微分三项参数调整,实现对车辆性能(如车速、方向等)的精确控制。系统仿真结果显示了良好的控制效果,完整程序运行无水印。模型涵盖了PID控制器和车辆动力学模型,验证了PID控制策略的有效性。
|
前端开发 JavaScript API
深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
1144 4
|
存储 设计模式 安全
C++一分钟之-并发编程基础:线程与std::thread
【6月更文挑战第26天】C++11的`std::thread`简化了多线程编程,允许并发执行任务以提升效率。文中介绍了创建线程的基本方法,包括使用函数和lambda表达式,并强调了数据竞争、线程生命周期管理及异常安全等关键问题。通过示例展示了如何用互斥锁避免数据竞争,还提及了线程属性定制、线程局部存储和同步工具。理解并发编程的挑战与解决方案是提升程序性能的关键。
444 3
|
JavaScript 前端开发
什么是 for 循环?
什么是 for 循环?
434 0
|
消息中间件 存储 监控
AMQP 与其他消息协议的对比分析
【8月更文第28天】高级消息队列协议 (AMQP) 是一种开放标准的应用层协议,主要用于消息中间件。本文将对比分析 AMQP 与其他流行的协议如 MQTT 和 RMQ(通常指的是 RabbitMQ),探讨它们的特点以及适合的应用场景。
528 0
|
存储 人工智能 安全
云计算与云存储:相互依赖与技术融合
【6月更文挑战第6天】云计算提供强大计算资源,如虚拟服务器和数据分析工具,提高效率和灵活性;云存储则提供可靠、安全、可扩展的存储空间。两者相互依赖并融合,例如通过云计算实现云存储的数据处理和安全管理。融合催生新应用场景,如大数据处理和人工智能训练,但也带来数据安全等挑战。随着技术进步,云计算与云存储的融合将持续推动创新和发展。
588 0
|
SQL 存储 人工智能
一次中稿10篇EMNLP22,达摩院对话智能团队在研究什么
一次中稿10篇EMNLP22,达摩院对话智能团队在研究什么
一次中稿10篇EMNLP22,达摩院对话智能团队在研究什么