元素的 频数 是该元素在一个数组中出现的次数。

给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。

执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。

示例 1:

输入:nums = [1,2,4], k = 5
输出:3
解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。
4 是数组中最高频元素,频数是 3 。
示例 2:

输入:nums = [1,4,8,13], k = 5
输出:2
解释:存在多种最优解决方案:

  • 对第一个元素执行 3 次递增操作,此时 nums = [4,4,8,13] 。4 是数组中最高频元素,频数是 2 。
  • 对第二个元素执行 4 次递增操作,此时 nums = [1,8,8,13] 。8 是数组中最高频元素,频数是 2 。
  • 对第三个元素执行 5 次递增操作,此时 nums = [1,4,13,13] 。13 是数组中最高频元素,频数是 2 。
    示例 3:

输入:nums = [3,9,6], k = 2
输出:1

解题思路

对数组进行排序,使用滑动窗口,窗口中的元素表示,在最多 k 次操作后,能够产生将窗口内的元素全部递增至nums[r],遍历右边界,产生若干个满足条件的窗口,找出最大的一个窗口,该窗口的长度就是最大可能频数

代码

class Solution {public int maxFrequency(int[] nums, int k) {Arrays.sort(nums);int l=0,r=0,n=nums.length,sum=0,max=0;if(n==1) return 1;while (r<n-1){r++;sum+=(r-l)*(nums[r]-nums[r-1]);while (sum>k){sum-=nums[r]-nums[l];l++;}max= Math.max(max,r-l+1);}return max;}
}

leetcode 1838. 最高频元素的频数相关推荐

  1. LeetCode 1838. 最高频元素的频数(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 元素的 频数 是该元素在一个数组中出现的次数. 给你一个整数数组 nums 和一个整数 k . 在一步操作中,你可以选择 nums 的一个下标,并将该下标 ...

  2. leetcode:1838. 最高频元素的频数【排序 + 前缀和 + 二分 + 思维】

    分析 由于只能通过加得到某个频数 因为求的是频数,所以二分频数 频数也作为自变量,而最少操作次数成为了因变量 问题的关键就是在给定频数的情况下,求出最少操作数 因为频数越大的话,最少操作数肯定是越大的 ...

  3. 1838.最高频元素的频数

    思路:一开始我是使用暴力解法,先排序,一个一个元素遍历,从该元素最近的一个数(左边)往左求它们的差值和直到超出了目标值k,再存所包含的最大元素个数,然后就超出时间限制了: class Solution ...

  4. Leetcode题347、前K个高频元素(Python题解)Amazon面试题

    问题: 题目来源:力扣(LeetCode) leetcode347.前K个高频元素 难度:中等 分析: 本题解提供四种方法,分别是python的Counter技巧.堆.桶排序.快排. 对于python ...

  5. 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)

    [LeetCode][HOT]347. 前 K 个高频元素 文章目录 [LeetCode][HOT]347. 前 K 个高频元素 package hot;import java.util.Arrays ...

  6. LeetCode——347. 前 K 个高频元素【最小堆实现】

    LeetCode--347. 前 K 个高频元素[最小堆实现] 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例1: 输入: n ...

  7. 【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)

    更多 LeetCode 题解笔记可以访问我的 github. 文章目录 描述 解法一:排序算法(不满足时间复杂度要求) Java 实现 Python 实现 复杂度分析 解法二:最小堆 思路 Java ...

  8. LeetCode 347. 前 K 个高频元素(C++)*

    该题在不考虑时间复杂度的要求下,可以使用哈希表来存储元素的次数,或者使用排序算法:为了提高算法的效率,考虑使用优先队列来实现大根堆. 1.题目如下: 给你一个整数数组 nums 和一个整数 k ,请你 ...

  9. Leetcode 347. 前 K 个高频元素

    Leetcode 347. 前 K 个高频元素 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/top-k-freque ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(分组颜色配置、位置配置)实战
  2. pytorch转libtorch,全网最全资料
  3. Select()系统调用及文件描述符集fd_set的应用
  4. 第四次实验 恶意代码技术
  5. python快速安装pip
  6. 读书笔记《单核工作法》_4原理4,5
  7. SpringMVC处理异常
  8. 程序员面试金典——7.6穿点最多的直线
  9. Atitit 衡量项目的规模
  10. [转载]年末致富有新招,写个程序抓红包
  11. 【Linux学习笔记】9. Linux打包压缩解压缩命令tar
  12. 敏捷软件开发实践-客户合作胜过合同谈判
  13. springboot2整合二维码 生成二维码图片及输出web端及打印
  14. 可变长度子网掩码(VLSM)
  15. 转载:一位顶级黑客编写的最强反编译器
  16. linux如何把文件压缩成,linux把文件压缩成.tar.gz的命令
  17. 如何在手机上完成日语翻译中文
  18. BugKu-图穷匕见
  19. 数禾科技:科技加持,让普惠“信用”服务触手可及
  20. Android3d结构光,一文看懂OPPO Find X 3D结构光技术有多牛

热门文章

  1. 【数字逻辑】第四章 组合逻辑电路:端口设计 端口拓展的方法
  2. TCP send 阻塞与非阻塞
  3. Java进阶:java字符串定位语句
  4. java教程百度文库,成功拿到offer
  5. win10计算机磁盘图标,Win10 21H1怎么更换电脑磁盘的图标标识
  6. 实验十一:图形界面二
  7. PHP 备份还原 MySql 数据库
  8. Ubuntu中NS2安装详细教程
  9. Android Studio调试时遇见Install Repository and sync project的问题
  10. qml: C++调用qml函数