补题与周总结:leetcode第 376 场周赛

文章目录

    • 复盘与一周总结
    • 2967. 使数组成为等数数组的最小代价(中位数贪心 回文数判断)
    • 2968. 执行操作使频率分数最大(中位数贪心 前缀和 滑窗)

image.png

复盘与一周总结

wa穿了第3题,赛时其实想到了思路:中位数贪心,从中位数开始,用左右指针找到第一个回文数,与该回文数的代价就是答案。但是没有考虑到左右指针同时找到回文数的情况,wa了一发之后开始改。用一个vector保存代价,只要数组长度大于2就返回其中的较小值。但是没有注意到自己的算法是左右指针同时找,可能出现同一个指针找到两次回文数的情况,此时就不是左右指针分别找到一次回文数。后面改成:数组长度大于5就返回最小值才ac,赛后重写用第一次的思路写了一遍,很快就ac了
现在想想,自己能很快想到正解,但是算法实现的却不是正解,而且赛时还没发现,甚至以为是思路错了,还往平均数那块想了会。只能说,自己在算法实现这块考虑得不仔细吧,下次别着急,想慢点
至于说第4题,赛时完全没有想到中位数贪心,想到哪了呢?我在考虑数组中数的出现次数,出现次数更多的数,最后的代价是否会小于出现次数更小的数。甚至想到:若一个数出现次数超过一半,那么把所有数变为这个数,此时的频率是否最大?接着就对着这个贪心结论证啊证,最后不了了之。但题目的关键点是:操作次数有限,那么就要考虑如何操作能尽可能少的使用操作次数,这样就能想到中位数了

周末这几场打下来,发现自己最大的问题就是:题意的理解。一是读假题,连题目在说什么都没搞清楚,甚至是自以为搞清楚,然后自欺欺人地想算法去了,如abc的E题,小白赛的E题。二是没有抓住题意的重点,只要是稍有难度的题,都需要抓住关键点不断地分析,如这次的第4题,小白赛的F题

问题反而是出现在阅读理解上

2967. 使数组成为等数数组的最小代价(中位数贪心 回文数判断)

2967. 使数组成为等数数组的最小代价 - 力扣(LeetCode)
image.png
根据中位数贪心,将数组排序后,从中位数开始,分别向左和向右找到第一个回文数并计算代价,数组两个代价中较小的即可

class Solution {
public:bool f(string s){int l = 0, r = s.size() - 1;while (l < r){if (s[l] != s[r]) return false;l ++ , r -- ;}return true;}long long minimumCost(vector<int>& nums) {sort(nums.begin(), nums.end());int mid;if (nums.size() & 1) mid = nums[nums.size() / 2];else mid = (nums[nums.size() / 2] + nums[nums.size() / 2 - 1]) / 2;long long ans1 = 4e18, ans2 = 4e18;int l = mid, r = mid;while (l >= 0){if (f(to_string(l))){long long t = 0;for (int i = 0; i < nums.size(); ++ i) t += abs(nums[i] - l);ans1 = t;break;}l -- ;}while (r < 2e9){if (f(to_string(r))){long long t = 0;for (int i = 0; i < nums.size(); ++ i) t += abs(nums[i] - r);ans2 = t;break;}r ++ ;}return min(ans1, ans2);}
};

2968. 执行操作使频率分数最大(中位数贪心 前缀和 滑窗)

2968. 执行操作使频率分数最大 - 力扣(LeetCode)
image.png
要使将数组中的某些数变成同一个数的代价最小,依然是中位数贪心
同时这个序列必须是原序列的一段连续区间。比如原数组为1,2,3,4,将1,2,3变为2的代价一定比1,2,4变为2的代价小
题目要返回代价小于等于k的情况下,最长的连续区间,对于连续区间问题,自然想到滑动窗口
那么接下来要考虑的是窗口滑动时的代价变化,除了 O ( n ) O(n) O(n)暴力求代价,还能使用前缀和进行预处理, O ( 1 ) O(1) O(1)地求代价

class Solution {
public:int maxFrequencyScore(vector<int>& nums, long long k) {sort(nums.begin(), nums.end());int n = nums.size();vector<long long> a(n + 1), s(n + 1);for (int i = 0; i < n; ++ i) a[i + 1] = nums[i], s[i + 1] = s[i] + a[i + 1];auto f = [&](int l, int mid, int r) -> long long{long long left = (mid - l) * a[mid] - (s[mid - 1] - s[l - 1]);long long right = (s[r] - s[mid - 1]) - (r - mid + 1) * a[mid];return left + right;};int l = 1, r = 1;int ans = 0;while (r <= n){while (f(l, (l + r) / 2, r) > k) l ++ ;ans = max(ans, r - l + 1);r ++ ;}return ans;}
};

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

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

相关文章

软考论文评分标准,究竟是什么?

软考论文的评分标准 软考论文具体评分时&#xff0c;参照每一试题相应的“解答要点”中提出的要求&#xff0c;对照下述5个方面评分&#xff1a; 1.贴合题意&#xff08;占比30%&#xff09; 不论是技术、理论或是实践论文&#xff0c;都需要紧扣主题展开深入探讨。 2.应用…

【Linux】如何在 Linux 终端中复制粘贴

Linux 终端中复制粘贴 一、在终端中使用 键盘快捷键 进行复制粘贴 CtrlShiftC/V二、在终端中复制和粘贴的另一种方法是使用&#xff1a;右键单击上下文菜单 。三、在Linux终端 使用鼠标中键&#xff08;滚轮&#xff09;复制粘贴四、为什么 Linux 终端不使用“通用”的 CtrlC 和…

类和动态内存分配

. 7. 解决赋值的问题 对于由于默认赋值操作符不合适而导致的问题,解决办法是提供赋值操作符(进行深度复制)定义。 其实现与复制构造函数相似,但也有一些差别。 ● 由于目标对象可能引用了以前分配的数据,所以函数应使用delete[]来释放这些数据。 函数应当避免将对象赋给自身;否…

损失函数中正则化中的平方项的作用!!

正则化上的平方项 前言在损失函数中添加正则化项时&#xff0c;通常会使用平方项作为正则化项&#xff0c;原因主要有以下几点&#xff1a; 前言 在损失函数中添加正则化项的原因主要是为了防止过拟合。正则化是一种常用的防止过拟合的技术&#xff0c;它可以对模型的复杂度进…

企业网站需不需要用到在线客服系统?

现如今&#xff0c;企业网站已成为企业展示形象、宣传产品和服务的重要窗口。在与客户互动的过程中&#xff0c;在线客服系统发挥着越来越重要的作用。那么&#xff0c;企业网站是否需要用到在线客服系统呢? 一、在线客服系统的优势 1.提高客户满意度 在线客服系统能够实现与客…

饥荒Mod 开发(十八):Mod 添加配置选项

饥荒Mod 开发(十七)&#xff1a;手动保存和加载&#xff0c;无限重生 我们可能需要给Mod 增加一些配置&#xff0c;比如是否开启全图&#xff0c;是否禁用自动保存等等&#xff0c;代码中就可以根据这些配置来做不同的逻辑。 添加配置 需要在modinfo.lua 中添加配置代码&…

VUE实现购物商城网站前端源码

文章目录 1.设计来源1.1 登录注册页面1.2 主界面1.3 列表界面1.4 详细界面1.5 购物车界面 2.源码2.1源码目录结构2.2源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/135054910 VUE实现购物商城网站前端源码&…

0155 - Java 数组

1 数组介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数(数据)组(一组)就是一组数据 2 数组的使用 2.1 使用方式一 2.2 使用方式二 3 数组使用注意事项和细节 数组是多个相同类型数据的组合&#xff0c;实现对这些数据…

加速Scrum敏捷转型的必选培训机构

针对敏捷转型培训&#xff0c;有一些知名的培训公司提供专业的敏捷培训课程和认证。以下是几家备受认可的敏捷转型培训公司&#xff1a; Leangoo领歌&#xff1a; Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;包…

带你深入解析 Compose 的 Modifier 原理 -- Modifier、CombinedModifier

Modifier 的含义 实际开发过程中&#xff0c;随处可见各种 Modifier&#xff0c;比如&#xff1a; Modifier.size() // 尺寸Modifier.width() // 宽度Modifier.height() // 高度Modifier.padding() // 间距Modifier.background() // 背景Modifier.…

2023年第四届 “赣网杯” 网络安全大赛 gwb-web3 Write UP【PHP 临时函数名特性 + 绕过trim函数】

一、题目如下&#xff1a; 二、代码解读&#xff1a; 这段代码是一个简单的PHP脚本&#xff0c;它接受通过GET请求传递的两个参数&#xff1a;‘pass’和’func’&#xff1a; ① $password trim($_GET[pass] ?? );&#xff1a;从GET请求中获取名为’pass’的参数&#xff0…

Eigen库之Quaterniond

Eigen::Quaterniond 是 Eigen C++ 库中用于表示四元数的类,四元数在计算机图形学、机器人学等领域中广泛用于表示旋转操作。四元数是一种紧凑且数值稳定的旋转表示方法。 以下是如何使用 Eigen::Quaterniond 的基本概述: 1. 包含 Eigen 库: 确保在你的 C++ 代码中包含 Ei…

C语言——内存函数的使用与模拟实现

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing 原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位…

【小白专用】php pdo sqlsrv 类,php连接sqlserver

1.找到自己版本&#xff0c;我的程序是64位的。 注意&#xff1a;ts与nts的区别&#xff0c;查看phpinfo信息&#xff0c;如下 <?phpecho phpinfo();?> 2.运行后&#xff0c;可以查看到如下数据&#xff1a; ① PHP 的版本是8.2.13&#xff1b; ② 属于线程安全版 ts…

远程多窗口和Screen用法

Termius 远程链接服务器终端时&#xff0c;经常遇到需要开多个窗口&#xff0c;另外还可能涉及到正在运行的程序一旦和服务器链接断开&#xff0c;那么程序也就停止执行了。对于单单只需要多个窗口的问题&#xff0c;建议下载一个Termius这样软件&#xff0c;比多次打开…

ForkJoinPool和ThreadPoolExecutor区别是什么?

ForkJoinPool和ThreadPoolExecutor的主要区别体现在任务执行的方式和适用的场景上。 任务执行方式&#xff1a;ThreadPoolExecutor是共享队列&#xff0c;所有任务都在一个队列中等待执行。而ForkJoinPool对于每个并行度都有独立的队列&#xff0c;每个任务都会被分配到对应的…

西门子S71200系列PLC通过PROFINET连接多功能电表

西门子S71200连接多功能电表 1、需求描述&#xff1a; 通过西门子S7-1200系列PLC&#xff0c;连接多功能电表&#xff0c;通过Modbus协议读写电表的数据。 2、方案描述&#xff1a; 桥接器的网口连接西门子S7-1200系列PLC的网口&#xff0c;串口连接到电表的485通讯口&#x…

2023美团商家信息

2023美团商家电话、地址、经纬度、评分、均价、执照...

第一节TypeScript 安装

一、TypeScript 安装 前提条件&#xff1a;我们环境中已经配置npm环境。 1、使用npm安装TypeScript 首先查看你本地是否已安装npm。打开cmd -> 输入“npm -v” 回车&#xff0c;查看输出的npm版本 上述输出代码你本地环境已经安装了npm工具&#xff0c;可以使用以下命令来…

【数据结构】并查集的简单实现,合并,查找(C++)

文章目录 前言举例&#xff1a; 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规…