描述:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

输入: arr = [1,3,5,7,2,4,6,8], k = 4

输出: [1,2,3,4]

解题思路:

这题因为不要求排序,所以思路很多,我自己想的思路有下面的两种

1.建立一个k个长度的数组result,先将原来arr数组中前4项装进去,用一个变量m记录结果result数组中的最大值的位置(这个找的时候,需要用一下排序算法,比如冒泡排序的第一遍或者快排之类的),从第五项遍历到最后一项(这个地方也可以用二分查找),arr中比result[m]小的就替换result[m],这个就是我临时想了一下,可能有误

2.这个我采用的是整个arr数组进行快速排序(不能用冒泡,复杂度高了会超时),如此整个数组为从小到大的有序状态,通过java.util.Arrays.copyof(arr,k)返回前k项。

class Solution {

public int[] smallestK(int[] arr, int k) {

int left = 0;

int right = arr.length-1;

quickSort(arr,0,arr.length-1);

int[] a =java.util.Arrays.copyOf(arr,k);

return a;

}

void quickSort(int arr[],int begin,int end)

{

//如果区间不只一个数

if(begin < end)

{

int temp = arr[begin]; //将区间的第一个数作为基准数

int i = begin; //从左到右进行查找时的“指针”,指示当前左位置

int j = end; //从右到左进行查找时的“指针”,指示当前右位置

//不重复遍历

while(i < j)

{

while(itemp)

j--;

//将右边小于等于基准元素的数填入右边相应位置

arr[i] = arr[j];

while(i

小k java_leetcode——面试题 17.14. 最小K个数 (java快速排序)相关推荐

  1. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排

    leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...

  2. 【每日一题】 面试题 17.14. 最小K个数

    面试题 17.14. 最小K个数

  3. 面试题 17.14. 最小K个数

    面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3 ...

  4. 程序员面试金典 - 面试题 17.14. 最小K个数(快排划分O(n))

    1. 题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4]提示: 0 &l ...

  5. 力扣 面试题 17.14. 最小K个数

    题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 来源:力扣(LeetC ...

  6. ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   有些数的素因子只有 3 ...

  7. 面试题 17.09. 第 k 个数[小顶堆][动态规划]

    思路 暴力搜索 因为要求的数只含3\5\7这三个素因子,因此只需判断将每个数除3/5/7除尽后是否为1,从而判断是不是所要求序列中的一个数. 超时 代码如下: class Solution {publ ...

  8. 算法试题 - 找出最小 k 个数

    题目 题目:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解析 思路1 这一题应用堆排序算法复杂度只有O(nlog k), ...

  9. 程序员面试金典 - 面试题 17.09. 第 k 个数(set优先队列/DP)

    1. 题目 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数. 注意,不是必须有这些素因子,而是必须不包含其他的素因子. 例如,前几个数按顺序应该是 1,3,5,7,9,15,21. 示 ...

最新文章

  1. 一步一步CCNA之六:交换机vtp配置
  2. phpstorm 2017.1.3编辑远程项目
  3. ibd finance
  4. Linkis1.0下载地址
  5. logstash 中multiline插件的用法
  6. git操作代码文件的颜色变化
  7. java迭代器逆序_迭代器
  8. HTML5前端开发真的会被取代吗?
  9. 再见!经典版Edge!
  10. dos创建mysql数据库_用命令创建MySQL数据库
  11. android ui机制的学习笔记
  12. Ubuntu部署Kibana和ElasticHD
  13. C语言全局变量和局部变量同名时的使用
  14. 节奏旋律音乐制作软件-Native Instruments Maschine 2 v2.14.1 WiN
  15. 数据分析实战——淘宝母婴用品购买情况
  16. 数据分析复盘报告,用Excel轻松搞掂!
  17. 最新整理:阿里、腾讯、字节、华为、百度等大厂Android岗面经分享!
  18. 科技的成就(三十六)
  19. word to pdf
  20. 【基于51的多功能智能小车】

热门文章

  1. 5g服务器优势特点详解
  2. Codeforces - Cashback
  3. nginx配置日志记录问题
  4. 中国上海人工智能企业CIMCAI世界港航人工智能领军者,成熟智慧港航AI产品,自动化港口数字化航运中国上海人工智能企业智慧港航
  5. 工作流模式每个工作流引擎都会支持多种方式的表单。目前大家讨论到的大概有三种。 动态表单 外置表单 普通表单
  6. Windows 防火墙的入站和出站规则说明
  7. 通灵学院|游戏设计研习8:游戏空间设计★(800字)
  8. 我的全栈之路-C语言基础之C语言概述与开发环境搭建
  9. 北京通州规划图全面汇总
  10. oracle pl/sql level妙用