786. 第 K 个最小的素数分数

  • 786. 第 K 个最小的素数分数
  • 题解

786. 第 K 个最小的素数分数

难度 困难
给你一个按递增顺序排序的数组 arr 和一个整数 k 。数组 arr 由 1 和若干 素数 组成,且其中所有整数互不相同。

对于每对满足 0 < i < j < arr.lengthij ,可以得到分数 arr[i] / arr[j]

那么第 k 个最小的分数是多少呢? 以长度为 2 的整数数组返回你的答案, 这里 answer[0] == arr[i]answer[1] == arr[j]

示例 1:

输入:arr = [1,2,3,5], k = 3
输出:[2,5]
解释:已构造好的分数,排序后如下所示:
1/5, 1/3, 2/5, 1/2, 3/5, 2/3
很明显第三个最小的分数是 2/5

示例 2:

输入:arr = [1,7], k = 1
输出:[1,7]

提示

  • 2 <= arr.length <= 1000
  • 1 <= arr[i] <= 3 * 104
  • arr[0] == 1
  • arr[i] 是一个 素数 ,i > 0
  • arr 中的所有数字 互不相同 ,且按 严格递增 排序
  • 1 <= k <= arr.length * (arr.length - 1) / 2

题解

思路一:暴力解法就不说了
class Solution {public int[] kthSmallestPrimeFraction(int[] arr, int k) {int n = arr.length;List<int[]> frac = new ArrayList<int[]>();for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {frac.add(new int[]{arr[i], arr[j]});}}Collections.sort(frac, (x, y) -> x[0] * y[1] - y[0] * x[1]);return frac.get(k - 1);}
}作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/k-th-smallest-prime-fraction/solution/di-k-ge-zui-xiao-de-su-shu-fen-shu-by-le-argw/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
思路二:
对于每一个arr[i] ,求出它的arr[i] / arr[j],它是一个递增的数组
把arr.length个递增的数组求出的k个最小值

官方题解

class Solution {public int[] kthSmallestPrimeFraction(int[] arr, int k) {int n = arr.length;PriorityQueue<int[]> pq = new PriorityQueue<int[]>((x, y) -> arr[x[0]] * arr[y[1]] - arr[y[0]] * arr[x[1]]);for (int j = 1; j < n; ++j) {pq.offer(new int[]{0, j});}for (int i = 1; i < k; ++i) {int[] frac = pq.poll();int x = frac[0], y = frac[1];if (x + 1 < y) {pq.offer(new int[]{x + 1, y});}}return new int[]{arr[pq.peek()[0]], arr[pq.peek()[1]]};}
}

786. 第 K 个最小的素数分数【我亦无他唯手熟尔】相关推荐

  1. 786. 第 K 个最小的素数分数

    786. 第 K 个最小的素数分数 给你一个按递增顺序排序的数组 arr 和一个整数 k .数组 arr 由 1 和若干 素数  组成,且其中所有整数互不相同. 对于每对满足 0 < i < ...

  2. 力扣786. 第 K 个最小的素数分数(自定义排序方式)?

    786. 第 K 个最小的素数分数 - 力扣(LeetCode) (leetcode-cn.com) class Solution {public int[] kthSmallestPrimeFrac ...

  3. leetcode 786 第K个最小的素数分数

    https://leetcode-cn.com/problems/k-th-smallest-prime-fraction/ 题目 给你一个按递增顺序排序的数组arr和一个整数k.数组arr由1和若干 ...

  4. 77. Leetcode 1439. 有序矩阵中的第 k 个最小数组和 (堆-技巧二-多路归并)

    技巧二 - 多路归并其实这个技巧,叫做多指针优化可能会更合适,只不过这个名字实在太过朴素且容易和双指 针什么的混淆,因此我给 ta 起了个别致的名字 - 多路归并.多路体现在:有多条候选路线.代码上, ...

  5. 选择问题(求第k个最小元素)

    什么是选择问题 划分的思路 Lomuto 划分 利用划分求第k小元素 C语言实现 改进 参考资料 什么是选择问题 选择问题(selection problem)是求一个n个数列表的第k个最小元素的问题 ...

  6. C语言在二叉搜索树找到第k个最小元素(附完整源码)

    C语言在二叉搜索树找到第k个最小元素 C语言在二叉搜索树找到第k个最小元素完整源码(定义,实现,main函数测试) C语言在二叉搜索树找到第k个最小元素完整源码(定义,实现,main函数测试) #in ...

  7. 二叉搜索树中第k大元素_二叉搜索树中第K个最小元素

    二叉搜索树中第k大元素 Problem statement: 问题陈述: Find the k-th smallest element in a given binary search tree (B ...

  8. 120 - 算法 -找到n个无序数中的 第k个最小的数 快排的变体

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cmath ...

  9. 计算区间素数和,杨老师正在上《离散数学》课程的“数论”内容,讲授素数的知识。素数又称为质数。一个大于1的整数p是素数,当且仅当p只能被1和自身整除。很显然,2是最小的素数。他想设计一个程序

    杨老师正在上<离散数学>课程的"数论"内容,讲授素数的知识.素数又称为质数.一个大于1的整数p是素数,当且仅当p只能被1和自身整除.很显然,2是最小的素数.他想设计一个 ...

最新文章

  1. 我们从那里来—子宫日记 Womb
  2. R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间
  3. yum whatprovides 查找哪个包可以提供缺失的文件
  4. 贝叶斯算法对文本进行分类实例
  5. 【Linux】一步一步学Linux——exec命令(208)
  6. 直线电机原理动画_最新的3D动画演示:同步电机原理及技术,一般人看不懂
  7. 用浏览器管理 Docker
  8. asp.net学习笔记异常处理001---.framework4.0中asp.net页面ValidateRequest=false 无效的问题
  9. Linux安装mysql-5.7.17
  10. 《通信原理》复习笔记4----第四章信道相关例题
  11. switchhosts使用
  12. android 实现谷歌地图
  13. Python中的变量
  14. java zone_offset_java 的 ZoneOffset 与 ZoneId
  15. 高企奖励来啦!2022年武汉市各区高新技术企业奖励补贴汇总和申报时间、申报条件
  16. ChatGPT 最好的替代品
  17. c语言数据结构课程设计电梯,数据结构课程设计报告(模拟电梯).doc
  18. 关于 LambdaMART 的六个疑惑
  19. 共享单车项目、mongodb集群
  20. 微信小程序input弹出键盘挡住文字的解决办法

热门文章

  1. 现在是不是买房的时候[转]
  2. dicom 文件接收服务器,SCU如何使用CGET从Dicom服务器接收dcm图像?
  3. 什么是抗原抗体?A、B、AB、O型血型来源?滴血认亲靠谱吗?DNA亲子鉴定原理?//2021-2-26
  4. 安装pip和设置pycharm
  5. 第一批因ChatGPT坐牢的人,已经上路了
  6. MATLAB中字符变量(char)和字符串变量(string)的异同
  7. Ubuntu部署nginx
  8. 移动端H5活动页优化方案
  9. 关于twrp 双清 三清 四清 五清含义
  10. centos实现后台运行jar包