小k java_leetcode——面试题 17.14. 最小K个数 (java快速排序)
描述:设计一个算法,找出数组中最小的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快速排序)相关推荐
- leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排
leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...
- 【每日一题】 面试题 17.14. 最小K个数
面试题 17.14. 最小K个数
- 面试题 17.14. 最小K个数
面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3 ...
- 程序员面试金典 - 面试题 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 ...
- 力扣 面试题 17.14. 最小K个数
题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 来源:力扣(LeetC ...
- ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 有些数的素因子只有 3 ...
- 面试题 17.09. 第 k 个数[小顶堆][动态规划]
思路 暴力搜索 因为要求的数只含3\5\7这三个素因子,因此只需判断将每个数除3/5/7除尽后是否为1,从而判断是不是所要求序列中的一个数. 超时 代码如下: class Solution {publ ...
- 算法试题 - 找出最小 k 个数
题目 题目:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解析 思路1 这一题应用堆排序算法复杂度只有O(nlog k), ...
- 程序员面试金典 - 面试题 17.09. 第 k 个数(set优先队列/DP)
1. 题目 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数. 注意,不是必须有这些素因子,而是必须不包含其他的素因子. 例如,前几个数按顺序应该是 1,3,5,7,9,15,21. 示 ...
最新文章
- 一步一步CCNA之六:交换机vtp配置
- phpstorm 2017.1.3编辑远程项目
- ibd finance
- Linkis1.0下载地址
- logstash 中multiline插件的用法
- git操作代码文件的颜色变化
- java迭代器逆序_迭代器
- HTML5前端开发真的会被取代吗?
- 再见!经典版Edge!
- dos创建mysql数据库_用命令创建MySQL数据库
- android ui机制的学习笔记
- Ubuntu部署Kibana和ElasticHD
- C语言全局变量和局部变量同名时的使用
- 节奏旋律音乐制作软件-Native Instruments Maschine 2 v2.14.1 WiN
- 数据分析实战——淘宝母婴用品购买情况
- 数据分析复盘报告,用Excel轻松搞掂!
- 最新整理:阿里、腾讯、字节、华为、百度等大厂Android岗面经分享!
- 科技的成就(三十六)
- word to pdf
- 【基于51的多功能智能小车】