力扣2968.执行操作使频率分数最大

力扣2968.执行操作使频率分数最大

方法一:滑窗 + 前缀和

  • 求前缀和数组s

  • 一个数组补齐到中位数的差值

    • 枚举右端点
  •   class Solution {
      public:
          int maxFrequencyScore(vector<int>& nums, long long k) {
              int res=0,n = nums.size();
              sort(nums.begin(),nums.end());
              vector<long long> s(n + 1, 0);
              for (int i = 0; i < n; i++) {
                  s[i + 1] = s[i] + nums[i];
              }
              auto distance_sum = [&](int l, int i, int r) -> long long {
                  long long left = (long long) nums[i] * (i - l) - (s[i] - s[l]);
                  long long right = s[r + 1] - s[i + 1] - (long long) nums[i] * (r - i);
                  return left + right;
              };
              for(int i=0,j=0;i<n;i++)
              {
                  while(distance_sum(j,(i+j)/2,i) > k)
                      j ++;
                  res = max(res,i-j+1);
              }
              return res;
          }
      };
    

方法二:滑窗 + 贡献法

  • 考虑每个元素对答案的贡献

    • 在这里插入图片描述

    • 发现每枚举到一个数时 + nums[i] – nums[i + j / 2]

    • 同理 当left++时为 + nums[j] - nums[(i+j+1)/2]

  •   class Solution {
      public:
          int maxFrequencyScore(vector<int>& nums, long long k) {
              int res=0,n = nums.size();
              long long s = 0;
              sort(nums.begin(),nums.end());
              for(int i=0,j=0;i<n;i++)
              {
                  s += nums[i] - nums[(i+j)/2];
                  while(s > k)
                  {
                      s += nums[j++] - nums[(i+j)/2];
                  }
                  res = max(res,i-j+1);
              }
              return res;
          }
      };
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单元测试AIR原则:提升代码质量的秘密武器

文章目录 引言一、AIR原则1. Automatic&#xff08;自动化&#xff09;2. Independent&#xff08;独立性&#xff09;3. Repeatable&#xff08;可重复性&#xff09; 二、Automatic&#xff08;自动化&#xff09;三、Independent&#xff08;独立性&#xff09;四、Repeatab…

GIF录屏工具Gif123 v3.3.0单文件

软件介绍 GIF的优势是小、轻、快&#xff0c;适合时间短、画面小、需要嵌入其他页面&#xff0c;打开就自动循环播放的动画。Gif123可录制合成鼠标轨迹,可调整鼠标指针大小,可在设置中打开鼠标指针高亮光圈功能,高亮光圈可跟随鼠标移动以指示鼠标位置。软件极其简单&#xff0…

C语言实现教学计划编制问题,Dev C++编译器下可运行(240606最新更新)

背景&#xff1a; 问题描述 大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限&#xff0c;每学年含两学期&#xff0c; 每学期的时间长度和学分上限都相等。每个专业开设的课程都是确定的&#xff0c;而且课程的开设时间的安排必须满足先修关系。每个课程的先…

树形表/树形数据接口的开发

数据表格式 需要返回的json格式 点击查看json数据 [{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-1-1","isLeaf" : null,"isShow" : null,"label" : "HTML/CSS","na…

Spark MLlib 机器学习详解

目录 &#x1f349;引言 &#x1f349;Spark MLlib 简介 &#x1f348; 主要特点 &#x1f348;常见应用场景 &#x1f349;安装与配置 &#x1f349;数据处理与准备 &#x1f348;加载数据 &#x1f348;数据预处理 &#x1f349;分类模型 &#x1f348;逻辑回归 &a…

【成品设计】基于NB模块智能烟感系统设计

《基于NB模块智能烟感系统》 整体功能&#xff1a; 所需器件&#xff1a; 选用STM32F103为主控&#xff0c;选用DS18B20温度传感器和MQ烟雾传感器作为数据采集点&#xff0c; 采用0.96寸屏显实时显示采集到的温度、烟雾等数据&#xff0c;用蜂鸣器作为报警装置。 通过有人物联…

OpenCV的“画笔”功能

类似于画图软件的自由笔刷功能&#xff0c;当按住鼠标左键&#xff0c;在屏幕上画出连续的线条。 定义函数&#xff1a; import cv2 import numpy as np# 初始化参数 drawing False # 鼠标左键按下时为True ix, iy -1, -1 # 鼠标初始位置# 鼠标回调函数 def mouse_paint(…

初学者如何对大模型进行微调?

粗略地说&#xff0c;大模型训练有四个主要阶段&#xff1a;预训练、有监督微调、奖励建模、强化学习。 预训练消耗的时间占据了整个训练pipeline的99%&#xff0c;其他三个阶段是微调阶段&#xff0c;更多地遵循少量 GPU 和数小时或数天的路线。预训练对于算力和数据的要求非…

冯喜运:6.7今日黄金原油行情分析及独家操作策略

【黄金消息面分析】&#xff1a;周三&#xff08;6月5日&#xff09;&#xff0c;金价回升逾1.2%&#xff0c;收盘报每盎司2,355.49美元&#xff0c;全面收复前一交易日的跌幅。周三当天前公布的美国民间就业数据弱于预期&#xff0c;增强了美联储将在今年晚些时候降息的预期&a…

06- 数组的基础知识详细讲解

06- 数组的基础知识详细讲解 一、基本概念 一次性定义多个相同类型的变量&#xff0c;并且给它们分配一片连续的内存。 int arr[5];1.1 初始化 只有在定义的时候赋值&#xff0c;才可以称为初始化。数组只有在初始化的时候才可以统一赋值。 以下是一些示例规则&#xff1a; …

AI全自动批量剪辑软件,一天剪辑3000条原创视频不是梦【剪辑软件+全套教程】

创建一个AI全自动批量剪辑软件的简易程序涉及较为复杂的视频处理和机器学习技术&#xff0c;而且由于这是一个相当高级的任务&#xff0c;通常需要大量的代码以及深度学习框架支持。不过&#xff0c;我可以为您提供一个非常基础版本的程序示例&#xff0c;它会用Python的moviep…

String类知识

目录 一、String存在意义 二、字符串为何不可变 三、String类常用方法 1、字符串构造 2、String对象的比较 3、字符串查找 4、转化 &#xff08;1&#xff09;数值和字符转化 &#xff08;2&#xff09;大小写转换 &#xff08;3&#xff09;字符串转数组 &#xff08;4&…

《精通ChatGPT:从入门到大师的Prompt指南》大纲目录

第一部分&#xff1a;入门指南 第1章&#xff1a;认识ChatGPT 1.1 ChatGPT是什么 1.2 ChatGPT的应用领域 1.3 为什么需要了解Prompt 第2章&#xff1a;Prompt的基本概念 2.1 什么是Prompt 2.2 好Prompt的特征 2.3 常见的Prompt类型 第二部分&#xff1a;Prompt设计技巧 第…

【Linux取经路】守护进程

文章目录 一、前台进程和后台进程二、Linux 的进程间关系三、setsid——将当前进程设置为守护进程四、daemon——设置为守护进程五、结语 一、前台进程和后台进程 Linux 中每一次用户登录都是一个 session&#xff0c;一个 session 中只能有一个前台进程在运行&#xff0c;键盘…

【Linux】进程切换环境变量

目录 一.进程切换 1.进程特性 2.进程切换 1.进程切换的现象 2.如何实现 3.现实例子 2.环境变量 一.基本概念 二.常见环境变量 三.查询常见环境变量的方法 四.和环境变量相关的命令 五.环境变量表的组织方式 六.使用系统调用接口方式查询环境变量 1.getenv 2.反思 …

高校运维赛 2024 pyssrf

没有环境,简单过一遍思路吧 考点: pickle反序列化urllib库注入redis缓存 from flask import Flask,request from redis import Redis import hashlib import pickle import base64 import urllib app Flask(__name__) redis Redis(host127.0.0.1, port6379)def get_result(u…

超越预期:Containerd 如何成为 Kubernetes 的首选容器运行时

> 作者&#xff1a;尹珉&#xff0c;KubeSphere Ambassado&#xff0c;rKubeSphere Contributor&#xff0c;KubeSphere 社区用户委员会杭州站站长。 踏上 Containerd 技术之旅 容器技术已经成为现代软件开发和部署的核心工具。通过容器&#xff0c;开发者可以创建轻量级…

【研发日记】Matlab/Simulink软件优化(二)——通信负载柔性均衡算法

文章目录 前言 背景介绍 初始代码 优化代码 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩》 背景介绍 在一个嵌入式软件开发项目中&#xff0c;需要设计一个ECU节点的CAN网路数据发送&#xff0c;需求是在500k的通信波特率上&a…

Python logging 模块详解

Python 的 logging 模块提供了一个强大而灵活的日志系统。它是 Python 标准库的一部分&#xff0c;因此可以在任何 Python 程序中使用。logging 模块提供了许多有用的功能&#xff0c;包括日志消息的级别设置、日志消息的格式设置、将日志消息输出到不同的目标&#xff0c;以及…

Mysql8安装教程与配置(超详细图文)

MySQL 8.0 是 MySQL 数据库的一个重大更新版本&#xff0c;它引入了许多新特性和改进&#xff0c;旨在提高性能、安全性和易用性。 1.下载MySQL 安装包 注&#xff1a;本文使用的是压缩版进行安装。 &#xff08;1&#xff09;从网盘下载安装文件 点击此处直接下载 &#…