给你一个整数数组 arr 和一个整数 k 。

设 m 为数组的中位数,只要满足下述两个前提之一,就可以判定 arr[i] 的值比 arr[j] 的值更强:

|arr[i] - m| > |arr[j] - m|
|arr[i] - m| == |arr[j] - m|,且 arr[i] > arr[j]
请返回由数组中最强的 k 个值组成的列表。答案可以以 任意顺序 返回。

中位数 是一个有序整数列表中处于中间位置的值。形式上,如果列表的长度为 n ,那么中位数就是该有序列表(下标从 0 开始)中位于 ((n - 1) / 2) 的元素。

例如 arr = [6, -3, 7, 2, 11],n = 5:数组排序后得到 arr = [-3, 2, 6, 7, 11] ,数组的中间位置为 m = ((5 - 1) / 2) = 2 ,中位数 arr[m] 的值为 6 。
例如 arr = [-7, 22, 17, 3],n = 4:数组排序后得到 arr = [-7, 3, 17, 22] ,数组的中间位置为 m = ((4 - 1) / 2) = 1 ,中位数 arr[m] 的值为 3 。

示例 1:

输入:arr = [1,2,3,4,5], k = 2
输出:[5,1]
解释:中位数为 3,按从强到弱顺序排序后,数组变为 [5,1,4,2,3]。最强的两个元素是 [5, 1]。[1, 5] 也是正确答案。
注意,尽管 |5 - 3| == |1 - 3| ,但是 5 比 1 更强,因为 5 > 1 。

代码

class Solution {public int[] getStrongest(int[] arr, int k) {Arrays.sort(arr);int n=arr.length;int m=arr[(n-1)/2];Integer[] r=new Integer[n];for(int i=0;i<n;i++)//转化为整形对象数组r[i]=new Integer(arr[i]);Arrays.sort(r, new Comparator<Integer>() {//按规则排序@Overridepublic int compare(Integer o1, Integer o2) {int a= Math.abs( o1-m),b= Math.abs( o2-m);if(a==b) return o1-o2;else return a-b;}});int[] arr1=new int[k];int j=0;for(int i=n-1;j<k;i--)//提取前k强的值arr1[j++]= r[i];return arr1;}
}

leetcode1471. 数组中的 k 个最强值(排序)相关推荐

  1. LeetCode 1471. 数组中的 k 个最强值(排序)

    1. 题目 给你一个整数数组 arr 和一个整数 k . 设 m 为数组的中位数,只要满足下述两个前提之一,就可以判定 arr[i] 的值比 arr[j] 的值更强: |arr[i] - m| > ...

  2. 求数组中第k个最小数

    一.问题描述 给定一个数组,数组中的数据无序,在一个数组中找出其第k个最小的数,例如对于数组x,x = {3,2,1,4,5,6},则其第2个最小的数为2. 二.解题思路 本算法跟快排的思想相似,首先 ...

  3. Leetcode215数组中第k大的数-最小堆

    题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出 ...

  4. Leetcode 215.数组中第k个最大元素 (每日一题 20210713)

    给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.示例 1:输入: [3,2,1,5,6,4] 和 ...

  5. python 数组中第k个最大元素

    数组中第k个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.示例 1:输入: [3,2 ...

  6. 线性时间复杂度求数组中第K大数

    求数组中第K大的数可以基于快排序思想,步骤如下: 1.随机选择一个支点 2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分) 3.设左部分的长度为L, 当K &l ...

  7. 2053. 数组中第 K 个独一无二的字符串

    2053. 数组中第 K 个独一无二的字符串 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字 ...

  8. C语言求一个数组中第k大的数,leetcode | Median of Two Sorted Arrays 寻找2个有序数组中第k大的值...

    There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...

  9. perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次

    perl 哈希数组的哈希 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 Problem statement: 问题陈述: Find the fir ...

最新文章

  1. 使用libjpeg进行图片压缩(哈夫曼算法,无损压缩)
  2. MSC Apex 2020中文版
  3. 忍一时得寸进尺, 退一步变本加厉。
  4. 十九、I2C驱动及应用
  5. php使用fopen乱码,php下fopen中文文件名乱码怎么办?
  6. 安装指定版本的minikube
  7. linux退出编辑器命令,LINUX中,Vi编辑器的几种模式及保存、退出等命令
  8. [C++] iota语句的语法
  9. jms java client mq_将Java客户端(JMS)连接到IBM MQ时出现问题
  10. android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置
  11. 获取显示器的唯一编号_宝马奔驰才配拥有的HUD抬头显示器,买菜车也能无损安装!...
  12. java用二维数组编写地图_[Java] Java二维数组写一个超级简单的扫雷游戏,适合新手...
  13. 华为、阿里、京东停止社招转外包:头部公司们的谋局
  14. Vue工程引入openlayers组件的方法
  15. JDK官网下载+JDK环境安装+hadoop环境配置
  16. Windows7安装VC2015-2019_redist.x64提示“设置失败0xc8000222-未指定的错误”
  17. SQL中drop,delete和truncate的异同
  18. NXP JN5169 烧录器原理图(FT232RL,不带按键)
  19. 【网络工程】交换机各层作用,100路监控摄像是否_该采用核心交换机吗
  20. Deepgreen/Greenplum删除节点步骤

热门文章

  1. zookeeper、hbase常见命令
  2. 连接sqlexpress
  3. Github 简明教程 - 添加远程库
  4. RHEL5.8配置开机自动挂载磁盘
  5. java基本类型的默认值及其取值范围
  6. 74-A/D指标,Accumulation/Distribution,积累/派发线,离散指标.(2015.7.1)
  7. 使用labview读取一副位图,并进行BCG校准(或修改其BCG)程序解析
  8. 正则表达式-用户名规则之只含汉字、数字、字母、下划线
  9. Linux下SVN搭建
  10. C#怎么用代码模拟手机去访问手机网站抓取数据