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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

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

给你一个整数数组 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提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^5
1 <= k <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/frequency-of-the-most-frequent-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 对数字进行排序(只有小的数能通过操作变成大的数),并求前缀和
  • 二分求解最大频次
  • 每次二分的时候,遍历一次前缀和数组,以某位置为最大频数的数字,能不能满足要求?根据结果,调整区间

类似题目:
LeetCode 1231. 分享巧克力(极小极大化 二分查找)

class Solution {int ans = 1;
public:int maxFrequency(vector<int>& nums, int k) {sort(nums.begin(), nums.end());vector<long> presum(nums.size()+1);for(int i = 1; i <= nums.size(); ++i)presum[i] = presum[i-1]+nums[i-1];int l = 1, r = 1e5, mid;while(l <= r){mid = l+((r-l)>>1);if(ok(nums, presum, mid, k))//在最大频数为mid的时候,能做到吗?{ans = mid;//能l = mid+1;}elser = mid-1;}return ans;}bool ok(vector<int>& nums, vector<long>& presum, long freq, int k){for(int i = freq; i < presum.size(); i++){if(presum[i]-presum[i-freq]+k >= nums[i-1]*freq)// 包含 i 位置在内的前面 freq 个数字都变成 i 位置处的数字,能做到吗return true;}return false;}
};

272 ms 84 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wafer小程序服务器,Wafer - 企业级微信小程序全栈方案

Wafer 服务端 SDK - C#本项目是 Wafer 组成部分&#xff0c;以 SDK 的形式为业务服务器提供以下服务&#xff1a;SDK 获取本项目遵守 MIT 协议&#xff0c;可以直接下载 SDK 源码进行修改、编译和发布。如果使用自动部署并选择 C# 语言&#xff0c;则分配的业务服务器里已经部署…

Android学习按键事件监听与Command模式

Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图&#xff1a; 将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b; 对请求排队或记录请求日志&#xff0c;以及支持…

fileinputstream_从Java中的FileInputStream读取字节

以下示例显示了如何从Java中的FileInputStream读取字节。import java.io.File;import java.io.FileInputStream;public class fileInputStream {public static void main(String[] args) {byte[] data new byte[1024]; //allocates memory for 1024 bytes//be careful about h…

LeetCode 1839. 所有元音按顺序排布的最长子字符串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 当一个字符串满足如下条件时&#xff0c;我们称它是 美丽的 &#xff1a; 所有 5 个英文元音字母&#xff08;a &#xff0c;e &#xff0c;i &#xff0c;o &#xff0c;u&#xff09;都必须 至少 出现一次。这些元音字母的顺序都必须按照 字…

特征处理

学自 极客时间 《深度学习推荐系统实战》 特征分为两类&#xff1a; 类别特征&#xff08;性别、地理位置、季节、天气、风格&#xff09;数值型特征&#xff08;年龄、收入、点击量、点击率&#xff09; 类别特征经过 One-Hot 编码后放入特征向量、或者 多个的特征值采用 M…

WIN 10 安装 Hadoop 2.7.7 + Spark 2.4.7 记录

文章目录0. 常规解压安装&#xff0c;并添加环境变量1. 下载并覆盖 bin 文件夹2. 使VERSION文件的clusterID一致3. 贴下单机配置4. 测试 Hadoop5. 安装Spark环境&#xff1a;win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.70. 常规解压安装&#xff0c;并添加…

canal mysql从库_canal中间件|数据增量同步解决方案

上一文中提到延时双删等策略实现数据一致性的时候&#xff0c;可能存在删除缓存失败的情况&#xff0c;就会出现缓存和数据库不一致的问题。为了应对删除缓存失败而导致数据不一致的问题&#xff0c;可以通过回溯数据库日志文件&#xff0c;提供一个保障的重试机制即可。流程如…

dbscan聚类算法matlab_密度聚类DBSCAN、HDBSCAN(转)

&#xfeff;# 密度聚类DBSCAN、HDBSCANDBSCANDBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff0c;具有噪声的基于密度的聚类方法&#xff09;是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇&#xff0c;并在具有…

Spark IDEA 编程环境配置

文章目录1. 下载资料准备2. 建立项目、添加环境设置3. 第一个 Spark 程序学自&#xff1a;Spark机器学习实战 https://book.douban.com/subject/35280412/ 记录一下踩过的坑&#xff1a; 环境&#xff1a;win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.7 …

天池 在线编程 订单分配(回溯)

文章目录1. 题目2. 解题1. 题目 描述 打车派单场景, 假定有N个订单&#xff0c;待分配给N个司机。 每个订单在匹配司机前&#xff0c;会对候选司机进行打分&#xff0c;打分的结果保存在N*N的矩阵score&#xff0c;其中score[i][j]代表订单 i 派给司机 j 的分值。 假定每个订单…

2015年北京户口全攻略

最新统计数据指出 截至2013年底&#xff0c;北京市常住人口为2114.8万人&#xff0c;其中常住外来人口为802.7万人。和“北京户口”捆绑的字眼&#xff0c;历来是身份、福利&#xff0c;以至于幸福感、安全感。那么北京户口有什么好处&#xff1f;外来人口如何落户北京呢&#…

水晶报表 jar包版本过低_工具类学习-UReport报表设计器整合

dada-report报表整合UReport报表设计器工具结合日常工作和学习实践&#xff0c;针对传统报表子站面临的问题&#xff0c;尝试借助UReport报表设计器解决1.可在现有工程基础上引入Ureport2报表设计器Ureport报表设计器是一个基于WEB的在线报表设计器&#xff0c;其具有良好的界面…

LeetCode 1844. 将所有数字用字符替换

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 s &#xff0c;它的 偶数 下标处为小写英文字母&#xff0c;奇数 下标处为数字。 定义一个函数 shift(c, x) &#xff0c;其中 c 是一个字符且 x 是一个数字&#xff0c;函数返回字母表中 c 后面第 x 个字符。 …

LeetCode 1845. 座位预约管理系统(set)

文章目录1. 题目2. 解题1. 题目 请你设计一个管理 n 个座位预约的系统&#xff0c;座位编号从 1 到 n 。 请你实现 SeatManager 类&#xff1a; SeatManager(int n) 初始化一个 SeatManager 对象&#xff0c;它管理从 1 到 n 编号的 n 个座位。所有座位初始都是可预约的。in…

unity game和scene效果不一样_不同的真石漆装饰效果也是不一样的

外墙真石漆真的是一件很好的产品&#xff0c;具有防火性、防水性、安全且环保、粘力强、永不褪色等特点&#xff0c;无疑是人们较好的选择&#xff0c;在很早之前就已经逐渐的取代了瓷砖和其他石材在人们心中的位置。真石漆的品种不止一种&#xff0c;按照装饰效果我们可以分为…

噪声产生原因_空调噪声大?啄木鸟家庭维修,看看属于哪一个问题

夏天终于要结束了&#xff0c;我只想安静的睡一个好觉。这个夏天中&#xff0c;楼上的空调每夜不休不眠的工作着&#xff0c;可这个空调为什么运作时的声音这么“巨大”。“轰轰轰……”&#xff0c;楼层都似乎和它产生了共振。而每晚的我&#xff0c;反反复复努力入睡&#xf…

05-按钮的基本使用-开发步骤

从Xcode5开始&#xff0c;图片资源都放到Images.xcassets中进行管理先添加必须的图片到Images.xcassets中调整界面尺寸 由于模拟器的默认尺寸是3.5inch&#xff0c;为了避免出现不必要的麻烦&#xff0c;最好将storyboard中的UI界面尺寸也调整为3.5inch添加4个方向按钮和2个缩放…

【机器学习】sklearn数据特征预处理:归一化和标准化

归一化处理 特点&#xff1a;通过对原始数据进行变换把数据映射到(默认为[0,1])之间 from sklearn.preprocessing import MinMaxScaler def mm():"""归一化处理:return: NOne"""mm MinMaxScaler(feature_range(2,3))data mm.fit_transform(…

LeetCode 1848. 到目标元素的最小距离

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff08;下标 从 0 开始 计数&#xff09;以及两个整数 target 和 start &#xff0c;请你找出一个下标 i &#xff0c;满足 nums[i] target 且 abs(i - start) 最小化 。注意&#xff1a;abs(x) 表示 x 的绝对值。…

【机器学习】sklearn数据集获取、分割、分类和回归

sklearn数据集1、数据集划分1.1 获取数据1.2 获取数据返回的类型举个栗子&#xff1a;1.3 对数据集进行分割举个栗子&#xff1a;2、 sklearn分类数据集3、 sklearn回归数据集1、数据集划分 机器学习一般的数据集会划分为两个部分&#xff1a; 训练数据&#xff1a;用于训练&a…