首页 > 编程语言 >[Python手撕]执行操作使频率分数最大

[Python手撕]执行操作使频率分数最大

时间:2024-10-15 12:11:04浏览次数:7  
标签:分数 pre right 频率 nums Python mid 数组 left

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。

你可以对数组执行 至多 k 次操作:

从数组中选择一个下标 i ,将 nums[i] 增加 或者 减少 1 。
最终数组的频率分数定义为数组中众数的 频率 。

请你返回你可以得到的 最大 频率分数。

众数指的是数组中出现次数最多的数。一个元素的频率指的是数组中这个元素的出现次数。

示例 1:

输入:nums = [1,2,6,4], k = 3
输出:3
解释:我们可以对数组执行以下操作:

  • 选择 i = 0 ,将 nums[0] 增加 1 。得到数组 [2,2,6,4] 。
  • 选择 i = 3 ,将 nums[3] 减少 1 ,得到数组 [2,2,6,3] 。
  • 选择 i = 3 ,将 nums[3] 减少 1 ,得到数组 [2,2,6,2] 。
    元素 2 是最终数组中的众数,出现了 3 次,所以频率分数为 3 。
    3 是所有可行方案里的最大频率分数。
class Solution:
    def maxFrequencyScore(self, nums: List[int], k: int) -> int:

        nums.sort()
        n = len(nums)

        pre = [n for n in nums]
        pre.insert(0, 0)
        for i in range(1, n + 1):
            pre[i] += pre[i - 1]

        def count(left, right):
            mid = (left + right) // 2
            return (
                pre[right + 1]
                - pre[mid + 1]
                - (right - mid) * nums[mid]
                + nums[mid] * (mid - left)
                - (pre[mid] - pre[left])
            )

        left = 0
        res = 0
        for right in range(n):
            while count(left, right) > k:
                left += 1
            res = max(res, right - left + 1)
        return res

标签:分数,pre,right,频率,nums,Python,mid,数组,left
From: https://www.cnblogs.com/DCFV/p/18467156

相关文章

  • dynamsoft_barcode_reader_bundle Python 10.4.2000
    RevolutionizingInventoryManagementinWarehouseswithDronesandBarcodeScanningTechnologydynamsoft_barcode_readerAsbusinessesscaleandsupplychainsbecomemorecomplex,inventorymanagementhasemergedasacriticalchallengeforwarehouseopera......
  • python-黑马程序员 初学者笔记(持续更新10.15)
    序章:由于科研室鼓励我们发布csdn,因此我们将一起学习python,这是我的笔记给大家分享出来,这不适用于一点都不会的小白,如果你看过一次或者想要回顾一下python内容再或者你正学习pyhon,可以参考本片笔记,本文章的优势在于是初学者所写,可能对于我们来说有共鸣,比较详细,并且重要知识点都......
  • python毕业设计基于Django的鲜花销售-花店网站
    文章目录前言详细视频演示一、项目介绍二、功能介绍三、核心代码数据库参考四、效果图五、文章目录前言  花卉商城系统是一个综合性的在线销售平台,专注于提供各种花卉植物的购买服务。该系统具备商品浏览、在线下单、支付结算以及订单跟踪等功能,用户可以轻松选......
  • [python毕业设计]免费分享一套基于Python的Django个人记账管理系统【论文+源码+SQL脚
    大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django个人记账管理系统,分享下哈。项目视频演示【免费】基于Python的Django个人理财(个人记账)管理系统Python毕业设计_哔哩哔哩_bilibili项目介绍个人记账的主要对象不像企业那样,是企业的资产和资本这些大量的资......
  • python使用smtp发送邮件
    python使用smtp发送邮件一、概述与发送邮件相关的Python模块:smtplib是关于SMTP(简单邮件传输协议)的操作模块,在发送邮件的过程中起到服务器之间互相通信的作用。email简单来说,即服务器之间通信的信息,包括信息头、信息主体等等。举个简单的例子,当你登录邮箱,写好邮件......
  • 用python、JavaScript、JAVA等多种语言的实例代码演示教你如何免费获取股票数据(实时数
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • Python编程、机器学习与深度学习技术——建议收藏!附代码!
    原文链接:Python编程、机器学习与深度学习技术——建议收藏!附代码!https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247622086&idx=4&sn=a2e310ea4b6e8a40de2fc683215e839b&chksm=fa825c21cdf5d537c8ef826df48d5e4791c48eda7bc53733a14dfaa67613dc76842db5da7104&token=......
  • Python中的pool.map函数:高效处理数据与计算任务
    在Python中,map()函数是一个非常实用的工具,它能对序列(如列表、元组等)进行映射操作,将一个函数作用于序列中的每个元素,并将结果组成一个新的序列返回。在一些大规模的数据处理和计算任务中,我们往往需要对大量数据进行高效的处理。这时,map()函数就显得尤为重要,而它的一个实现——pool.......
  • 针对不同类型的数据,哪些Python可视化库更适合处理时间序列数据?
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • python中函数的定义和调用
    1.什么是函数?    函数是编程中的一种封装机制,用来将一组可重复使用的代码片段组织在一起,以便在不同的地方调用。函数可以接收输入(称为参数),执行特定的操作,并且可以返回输出(称为返回值)。函数的主要目的是提高代码的复用性、可读性和组织性。2.函数定义的语法:   ......