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

虎牙Android面试题及参考答案

给个数组,找出数组中第 k 大的数(利用快排思想 / 用小顶堆,他说可以用大顶堆?)

  • 利用快排思想:快速排序的核心思想是分治和分区。在找数组中第 k 大的数时,每次选择一个基准元素,将数组分为两部分,左边部分小于基准元素,右边部分大于基准元素。如果基准元素最终的下标是 n - kn 是数组长度),那么这个基准元素就是第 k 大的数。如果基准元素的下标小于 n - k,说明第 k 大的数在基准元素右边的部分,继续在右边部分进行分区操作;如果基准元素的下标大于 n - k,则在基准元素左边的部分继续进行分区操作。这种方法的平均时间复杂度为 ,最坏情况下时间复杂度为 ,空间复杂度为 (递归调用栈的空间)。
  • 利用小顶堆:首先创建一个大小为 k 的小顶堆,将数组中的前 k 个元素放入小顶堆中。然后从第 k + 1 个元素开始遍历数组,如果当前元素大于小顶堆的堆顶元素,则将堆顶元素弹出,把当前元素插入小顶堆。遍历完整个数组后,小顶堆的堆顶元素就是数组中第 k 大的数。时间复杂度为 ,空间复杂度为 ,因为需要维护一个大小
http://www.lryc.cn/news/459685.html

相关文章:

  • C++:错误代码分析<2>
  • 怎么ping网络ip地址通不通
  • 前端新机部署
  • 对比 Babel、SWC 和 Oxc:JavaScript 和 TypeScript 工具的未来
  • MySQL SELECT 查询(三):查询常用函数大全
  • axios 的 get 请求传参数
  • 用C++编写信息管理系统(歌单信息管理)
  • 对层级聚类树进行模块分割,定位基因在哪个模块中
  • 机器学习【金融风险与风口评估及其应用】
  • 【计算机网络 - 基础问题】每日 3 题(三十八)
  • 深入浅出MongoDB(五)
  • 【conda】创建、激活、删除虚拟环境
  • 关于int*的*号归属权问题
  • leetcode---素数,最小质因子,最大公约数
  • 基于stm32的蓝牙模块实验
  • C语言解决TopK问题
  • 磁盘存储链式结构——B树与B+树
  • 如何批量从sql语句中提取表名
  • 怎么把音频的速度调慢?6个方法调节音频速度
  • K8s-services+pod详解1
  • 从RNN讲起(RNN、LSTM、GRU、BiGRU)——序列数据处理网络
  • python:假的身份信息生成模块faker
  • spring task的使用场景
  • 美畅物联丨剖析 GB/T 28181 与 GB 35114:视频汇聚领域的关键协议
  • uni-app 开发的应用快速构建成鸿蒙原生应用
  • 代码随想录算法训练营| 669. 修剪二叉搜索树 、 108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树
  • Django模型实现外键自关联
  • Android ViewModel
  • 优先算法1--双指针
  • 利用弹性盒子完成移动端布局(第二次实验作业)