Leetcode1838. 最高频元素的频数

统计数组中元素的频数和频率方法总结 文档中总结了统计数组中元素的频数和频率的三种方法,三种方法各有个的特点 立即下载

Every day a Leetcode

题目来源:1838. 最高频元素的频数

解法1:排序 + 滑动窗口

发现1:操作后的最高频元素必定可以是数组中已有的某一个元素。

发现2:优先操作距离目标值最近的(小于目标值的)元素。

将数组 nums 排序,遍历排序后数组每个元素 nums[i] 作为目标值,并求出此时按贪心策略可以改变至目标值的元素左边界。

我们使用 left 与 right 作为执行操作的左右边界(闭区间),同时用 total 来维护将 [left, right] 区间全部变为末尾元素的操作次数。

在这里插入图片描述

在顺序枚举目标值(右边界)的同时,我们更新对应的左边界,并用 max_frq 来维护满足限制的最大区间元素数量即可。

更新对应的左边界的同时, total也要更新:

total -= diff

在这里插入图片描述

代码:

/*
 * @lc app=leetcode.cn id=1838 lang=cpp
 *
 * [1838] 最高频元素的频数
 */

// @lc code=start
class Solution
{
public:
    int maxFrequency(vector<int> &nums, int k)
    {
        int n = nums.size();
        sort(nums.begin(), nums.end());
        int left = 0;
        int max_frq = 1;
        long long sum = 0;
        // 枚举窗口的右边界
        for (int right = 1; right < n; right++)
        {
            long long addition = 1LL * (nums[right] - nums[right - 1]) * (right - left);
            sum += addition;
            // 修改窗口的左边界
            while (sum > k)
            {
                int diff = nums[right] - nums[left];
                sum -= diff;
                left++;
            }
            int cur_frq = right - left + 1;
            max_frq = max(max_frq, cur_frq);
        }
        return max_frq;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(nlogn),其中 n 是数组 nums 的长度。

空间复杂度:O(1).

解法2:前缀和 + 二分

题解:【1838. 最高频元素的频数】C++解法:「前缀和+二分」

ET篇:Google.Protobuf的学习(理解基本的使用流程) 据我目前所知,ET使用的数据交换协议是Google.Protobuf,所以今天就来学习一下,但是网上许多人都是以高下立判的方式讲解的,对新手小白很不友好,所以我今天就以纯小白的视角和大家一起学习 学习环境: .NET Core2.2 .NET Framework 4.7.2 Rider protobuf-csharp-3.7.0-rc-2 Google.Protobuf简介 prot... 阅读详情

相关推荐

stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 需求: 使用stm32H743的ADC采集5路ovrc

xtqbp的博客 4364

《LeetCode之每日一题》:95.最高频元素的频数

这里写目录标题一级目录二级目录 一级目录 二级目录

MerryMaking7946的博客 459

立创星火计划:基于STM32H743VIH6的Maverick_H743_MK1.0高性能开源飞控硬件全解析

本文详细解析了基于STM32H743VIH6核心的Maverick_H743_MK1.0高性能开源飞控硬件设计。重点阐述了采用双IMU冗余设计、高精度气压计、多路独立电源管理以及丰富接口(如CAN总线)的考量,旨在为穿越机、科研无人机等平台提供强大、可靠的飞行控制解决方案。

weixin_28787801的博客 200

1838. 最高频元素的频数

元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 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

stay hungry ! stay foolish! 385

QGraphicsView通过鼠标操作来绘制图元

在Visio和MindManager等类似的图元操作软件中,很多时候我们会通过鼠标操作来添加自定义的图元。这里就介绍一下如何在QT的图形视图框架中通过鼠标绘制来添加图元。

yang1fei2的博客 3577

【YOLO26实战全攻略】10——YOLO26+SAM3实战:从检测到像素级分割的全流程指南(含PCB缺陷检测案例)

本文聚焦YOLO26与SAM3的融合应用,系统讲解“检测+分割”的三种核心模式:YOLO26原生分割(轻量高效)、YOLO26检测+SAM3精细分割(精度极致)、SAM3自动标注+YOLO26蒸馏(低成本冷启动)。从环境搭建、数据集准备、模型训练、性能优化到边缘部署,提供 step-by-step 实操教程,配套完整可运行代码与执行结果。结合虚拟PCB缺陷检测案例,展示像素级缺陷识别与几何参数测量的工业级应用流程。本文兼顾新手入门与进阶提升,注重实用价值,读者可直接参考搭建自己的分割系统。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 628

力扣(leetcode) 1838. 最高频元素的频数 (滑动窗口法)

题目在这:https://leetcode-cn.com/problems/frequency-of-the-most-frequent-element/ 题目分析: 简单的说一下这个题目的意思,就是给你一个数组,比如[1,2,3] 再给你一个正数,比如 K = 3。 你可以将数组内的任意数字加1,操作3次,使数组内相同数字出现的次数最多。 比如上述例子,将 1 加两次 等于3 。2加一次等于3.此时 ‘加1’ 操作进行了3次, 小于等于题目中给的K。且数组中为【3,3,3】 ”3“ 出现了三次,是最多的

深度不学习!!的博客 866

05、CAN 总线拓扑结构详解,线型拓扑搭建要点

CAN总线拓扑与信号完整性优化 本文通过工程实践经验,深入剖析了CAN总线系统中信号完整性的关键要素。主要内容包括: 终端电阻的核心作用:必须严格在总线两端配置120Ω电阻,形成60Ω等效阻抗以匹配双绞线特性阻抗,避免信号反射导致的波形畸变。 阻抗匹配原理:解释了信号能量管理机制,指出阻抗不连续会导致信号反射,并通过示波器波形特征(如振铃现象)判断阻抗失配问题。 信号完整性多维要求:强调信号质量不仅涉及波形存在与否,还包括边沿斜率、共模电压范围等关键参数,这些直接影响通信可靠性。 工程实践建议:提供了终端电

2401_88858637的博客 180

出现频率最多的 k 个元素

题目 题源 代码 class Solution { /** 先通过hashMap存储,键是num,值是频次; 接下来,存储到桶中,桶的下标是频次,桶中存入多个频次相同的num; 再次,遍历桶,从后往前遍历,如果该桶有数则加入ArrayList中; 最后,将arrayList中的num转为int数组。 */ public int[] topKFrequent(int[] nums, int k) { Map<Integer, I

qq_29494693的博客 448

28-3 文件上传漏洞 -白盒审计绕过

这行代码是用来获取文件名中最后一个点(.)后的部分,也就是文件的后缀名。这个函数会返回以最后一个点(.)开始到字符串末尾的部分,包括点(.)本身。然而,这段代码存在一个潜在的安全风险。攻击者可以利用多个点(.)来构造恶意文件名,以绕过后缀名检查。切换到bp将抓到的上传请求发送到重发器然后改包。先上传一个普通的php文件然后使用bp抓包。

weixin_43263566的博客 392

小红书图文笔记图像批量爬取:Python爬虫实战与反反爬策略全解析

在当今社交媒体盛行的时代,小红书作为中国领先的生活方式分享平台,积累了海量的优质图文内容。对于数据分析师、市场研究人员或内容创作者来说,能够高效获取这些数据具有重要意义。本文将详细介绍如何使用Python构建一个高效、稳定的小红书图文笔记图像批量爬取工具,涵盖最新技术栈和反反爬策略。本文详细介绍了如何使用Python构建一个高效、稳定的小红书图文笔记图像批量爬取系统。通过结合Playwright、aiohttp等现代工具,实现了从列表页采集到图片下载的完整流程。

2201_76125261的博客 2365

出现频率最多的 k 个数 /Top K Frequent Elements (Medium)

分为桶排序和堆排序 共同点: 1.利用Hashmap  做key-value键值对;key表示数组元素,value表示元素出现的次数 桶排序思想: 2.定义一个数组,存放出现频率相同的元素 3.利用数组  index:频率   value:存放频率相同的元素 4.从后到前遍历,返回后topk元素 考察:map用法,ArrayList用法,List用法  Comparator.sort()用法 ...

qq_31957639的博客 2042

【逐函数讲解ORB_SLAM3源码】获取普通帧率、关键帧、IMU数据

获得imu的旋转 mRwc * mImuCalib.mTcb.rotationMatrix(); Sophus::SE3 mTwc 创建ORB_SLAM3系统 Create SLAM system. It initializes all system threads and gets ready to process frames. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_RGBD, true, 0, file_nam

小秋 AI SLAM 入门实战教程 1245

记力扣1838.最高频元素的频数 练习理解

理解每次增加的是(nums[right] - nums[right-1]) * (right - left)的差值旨将每个数都变成nums[right] 而大于K时只需要移除nums[left】即可。例如 1 3 5 7 k=4 ,按照我的思路他在[1,5]都成立,那么结果为3 但正确结果为2,原因为他最多两个数字相同并不是三个。解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4]。输入:nums = [1,4,8,13], k = 5。

目前主攻编程,目标是把屏幕上的红波浪线变成流畅运行的程序♪(^∀^●)ノシ 1118

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Leetcode 1838最高频元素的频数

leetcode 1838

aiulenglian的博客 123

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

力扣1838.最高频的元素的频数

首先排序 然后右指针遍历补成的数。

Pisasama的博客 446

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Leetcode-​1838. 最高频元素的频数​

在计算[L,R]时,已知[L,R-1]的操作次数,且nums[L,R-1]的值都为nums[R-1],此时需要将其中所有值都变为nums[R],增加的操作数是(nums[R]-nums[R-1])*(R-L)。再判断是否超过了k,如果超过,L需要向右移动,缩小窗口。此时我们就可以更新最大窗口长度,得到最终结果。首先需要对数组进行排序,为什么呢?排序后,我们需要维护一个窗口,这个。

jjj_asteria的博客 410

[LeetCode解题报告] 1838. 最高频元素的频数

前缀和+双指针

liuliangcan的博客 182

LeetCode 1838. 最高频元素的频数 [java实现]

一、问题描述 元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。 执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。     二、测试数据 示例 1: 输入:nums = [1,2,4], k = 5 输出:3 解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。 4 是数组中最高频元素,频数是 3 。   示

lly-Rachel的博客 308

leetcode1838(最高频元素的频数:滑动窗口)

元素的频数是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。 执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。 实例: 输入:nums = [1,2,4], k = 5 输出:3 题解:滑动窗口   此题中只能对元素进行增加操作,最先能想到的思路是:对数组先进行排序,然后遍历数组中的每一个数字,每遍历到一个数字,就计算出该数字的最大可能频数,最后比较返回最大可能频数即可,但这样去操

CY2333333的博客 396

LeetCode 1838. 最高频元素的频数

对第一个元素执行 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 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4]。4 是数组中最高频元素,频数是 3。

m0_56090828的博客 588

LeetCode——1838. 最高频元素的频数

排序+滑动窗口+贪心算法解决问题

weixin_44750790的博客 247

leetcode 1838. 最高频元素的频数

元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。 执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。 最高频元素的频数 示例 1: 输入:nums = [1,2,4], k = 5 输出:3 解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。 4 是数组中最高频元素,频数是 3 。 示例 2: 输入:n

qq_45207895的博客 361

LeetCode #1838 最高频元素的频数

1838. 最高频元素的频数 元素的频数是该元素在一个数组中出现的次数。 给你一个整数数组nums和一个整数k。在一步操作中,你可以选择nums的一个下标,并将该下标对应元素的值增加1。 执行最多k次操作后,返回数组中最高频元素的最大可能频数。 示例 1: 输入:nums = [1,2,4], k = 5 输出:3 解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。 4 是数组中最高频元素,频数是 3 。...

JUST CODE IT 221

Leetcode 1838 最高频元素的频数

1838. 最高频元素的频数 难度中等191 元素的频数是该元素在一个数组中出现的次数。 给你一个整数数组nums和一个整数k。在一步操作中,你可以选择nums的一个下标,并将该下标对应元素的值增加1。 执行最多k次操作后,返回数组中最高频元素的最大可能频数。 示例 1: 输入:nums = [1,2,4], k = 5 输出:3 解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。 4 是数组中最高频元...

qq_37637818的博客 175

LeetCode——1838. 最高频元素的频数(Frequency of the Most Frequent Element)[中等]——分析及代码(Java)

LeetCode——1838. 最高频元素的频数[Frequency of the Most Frequent Element][中等]——分析及代码[Java]一、题目二、分析及代码1. 排序 + 双指针(1)思路(2)代码(3)结果三、其他 一、题目 元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。 执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。 示例 1:

江南土豆的博客 665
上一篇: Leetcode1833. 雪糕的最大数量
下一篇: Leetcode1971. 寻找图中是否存在路径
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值