当前位置: 首页 > news >正文

深圳的网站建设公司价格谷歌浏览器下载手机版官网中文

深圳的网站建设公司价格,谷歌浏览器下载手机版官网中文,阳江房产网站,哪个小说网站防盗做的好题目: 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入 4、5、1、6、2、7、3、8 这 8 个数字,则最小的 4 个数字是 1、2、3、4。 示例: 输入:arr [3,2,1], k 2 输出:[1,2] 或者 [2,1] …

题目:

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

示例:

输入:arr = [3,2,1], k = 2
输出:[1,2] 或者 [2,1]

输入:arr = [0,1,2,1], k = 1
输出:[0]

思考:

  • 找到一个数组中最小的 k 个数,得出要对该数组进行排序

  • 排序算法该如何选择呢?

  • 根据题目要求,不要求输出的这 k 个数的顺序,考虑使用快速排序

  • 因为是输出最小的 k 个数,索引从 0 开始,所以当基准数为 k+1 小的数时,这个基准数的左边子数组就是我们要找的 k 个数,也就是基准数索引为 k 时

  • 使用快速排序划分子数组,每划分一次看基准数索引是否等于 k

  • 若 k < 基准数索引 ,代表第 k+1 小的数字在 左子数组 中,则递归左子数组

  • 若 k > 基准数索引 ,代表第 k+1 小的数字在 右子数组 中,则递归右子数组

  • 否则直接返回数组前 k 个数字

题解:

class Solution {public int[] getLeastNumbers(int[] arr, int k) {if (k >= arr.length) return arr;return quickSort(arr, k, 0, arr.length-1);}private int[] quickSort(int[] arr, int k, int l, int r){int i = l, j = r;while (i<j){while (i<j && arr[j] >= arr[l]) j--;while (i<j && arr[i] <= arr[l]) i++;swap(arr,i,j);}swap(arr,i,l);//基准数索引 > k,递归左子数组if (i > k) return quickSort(arr, k, l, i-1);//基准数索引 < k,递归右子数组if (i < k) return quickSort(arr, k, i+1, r);return Arrays.copyOf(arr, k);}//交换方法private void swap(int[] arr, int i, int j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}
}
http://www.hrbkazy.com/news/18865.html

相关文章:

  • 建网站培训班千万别在百度上搜别人的名字
  • 国外做设备网站淘宝app官方下载
  • 石景山青岛网站建设国内外搜索引擎大全
  • 做影视网站用主机还是用服务器网络推广营销方案100例
  • 贵州华瑞网站建设有限公司百度客服中心人工在线咨询
  • 第五次普查数据自网站怎么做bt磁力狗
  • 网站站群怎么做最近热搜新闻事件
  • 幼儿园网站建设的意义厦门百度代理公司
  • 重庆网络推广交流快速排名软件seo系统
  • 科技公司网站设计方案怎么在百度做广告
  • 外贸网站优化怎么做网站优化团队
  • 做鞋子批发网站seo一个月工资一般多少
  • 广州网站建设互广网址大全是ie浏览器吗
  • zencart 网站换域名网盘资源搜索神器
  • 各种类型网站建设独立新闻头条最新消息10条
  • 免费申请激活码seo技术网网
  • 如意宝魔方建站关键词排名代做
  • 专业网站制作软件seo教学网seo
  • 网上商城前端模板债务优化是什么意思
  • 如何做php游戏介绍网站优化网络推广外包
  • 做网站42类商标怎么选小类sem与seo的区别
  • 中国建设网站企业网上银行业务功能河南网站建站推广
  • 专业营销的网站建设公司全国十大婚恋网站排名
  • 大名企业做网站推广淘宝推广工具
  • 做招聘网站最近发生的热点新闻
  • wordpress安装不上seo怎么收费
  • 如何利用谷歌云做自己的网站网站怎么制作教程
  • 企业内部网站源码营销是什么意思
  • 重庆大型的网站建设北京网站优化方案
  • 网站建设维护资质爱站关键词挖掘软件