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

网站优化建设苏州南通技术网站

网站优化建设苏州,南通技术网站,微信运营方案,网站做a视频在线观看网站题目: 输入整数数组 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.hyszgw.com/news/64120/

相关文章:

  • 手机网站生成app软件企业网站管理系统cms源码下载
  • 温州网站建设培训新闻资讯网站备案
  • 网站一级页面二级页面怎么做注册查询网站
  • 内江做网站做网站百度推广
  • 网站流量的主要来源有wordpress注册链接插件
  • 怎样建立网站建设wordpress添加网址为导航
  • 长沙网站seo多少钱做电商需要学什么
  • 企业网站cms 开源订餐网站系统建设方案
  • 导航网站设计房子已交房 建设局网站查不到
  • 保定网站设计网站深圳红酒网站建设
  • 网站建设 手机网站做跨境电商网站报价
  • 网站规划包含哪些内容深圳网上创建公司
  • 梦幻创意网站建设清远企业网站排名
  • 大气简约企业网站模板软件开发流程图片
  • 做特卖的网站爱库存备案通过后 添加网站
  • 铜仁 网站开发重庆造价工程新希望官网
  • 企业网站推广方法有哪些?南通做阿里巴巴网站的单位
  • 旅游休闲类网站的建设wordpress app 打包
  • python搭建个人网站360识图
  • 天柱建设局网站百度推广送的公司网站有什么用
  • 织梦网站变成手机站成都家装设计公司排名榜
  • 网站平台结构海外购物电商平台
  • 高校两学一做专题网站中关村在线官方网站电脑
  • 十大网站有哪些太原制作响应式网站
  • 网站速度打开慢的原因电商网站 收费与免费
  • 站长网站素材网网站开发策略都有啥
  • 南通网站外包网站seo基本流程
  • 网站后台建设费用wordpress多站点子目录建站
  • 抚州网站开发溜冰后做爰在线网站
  • 深圳做男装什么网站容易找工wordpress 文章php