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

深圳的网站建设公司价格企业网站建设平台

深圳的网站建设公司价格,企业网站建设平台,濮阳seo外包公司,ai写作网站题目: 输入整数数组 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/41132.html

相关文章:

  • 网站做等保网络营销推广方案论文
  • wordpress修改首页刷移动端seo软件
  • 建设银行包头分行网站网站如何做推广
  • 国外用wordpress深圳百度seo培训
  • 接单做效果图网站百度seo关键词优化工具
  • wps的ppt做网站超链接福州关键词排名软件
  • 网站方案策划怎么写网络优化工程师前景如何
  • 个人主页网页设计作品html网络优化工程师为什么都说坑人
  • 软件开发和程序员哪个工资高seo关键词分析表
  • 020模版网站制作百度怎么精准搜关键词
  • 做网站续费北京seo全网营销
  • wordpress 本地 慢长沙百度seo
  • 中小学门户网站建设怎么申请自己的网络平台
  • dw怎么做班级网站站长之家0
  • 制作一个网页游戏需要多少钱西安seo哪家好
  • 建网站资阳哪家强?北京网站建设公司报价
  • 刚察县wap网站建设公司网站域名费一年多少钱
  • 做外贸 访问国外网站黄页引流推广网站入口
  • 观山湖网站建设推广免费顶级域名注册
  • 学习java网站开发成功品牌策划案例
  • 分类信息的网站排名怎么做做一个公司网站要多少钱
  • 北海网站建设西安sem竞价托管
  • 做刷机网站赚钱吗公司推广文案
  • 昆明建个网站哪家便宜亚马逊跨境电商
  • 昆明房地产网站建设上海网站seo排名优化
  • 二手设备回收做哪个网站好郑州网络营销与网站推广
  • 织梦如何制作静态网站模板珠海百度推广优化排名
  • 做网站在哪里长沙百度首页排名
  • 做网站群的公司百度top排行榜
  • 教师做班级网站seo是什么工作