20210314:力扣第 232 场周赛
力扣第 232 场周赛
- 题目
- 思路与算法
- 代码实现
- 写在最后
题目
仅执行一次字符串交换能否使两个字符串相等
找出星型图的中心节点
最大平均通过率
好子数组的最大分数
思路与算法
- 仅执行一次字符串交换能否使两个字符串相等
翻译题目即可 - 找出星型图的中心节点
关键在于清楚这个中心点出现的次数刚好就是点数-1 - 最大平均通过率
优先队列存所有的最大通过率,注意加一个同学到一个班里的通过率提升最大,再加就会减少通过率,因此每次只能加1个,按顺序一个一个加才行。 - 好子数组的最大分数
贪心,尽可能宽的范围,尽可能大的最小值。最小值包含k,依次减小遍历即可。
代码实现
- 仅执行一次字符串交换能否使两个字符串相等
class Solution {public:bool areAlmostEqual(string s1, string s2) {if (s1.size() != s2.size()) {return false;}if (s1 == s2) {return true;}for (int i = 0; i < s1.size() - 1; ++i) {for (int j = i + 1; j < s1.size(); ++j) {if (swap(s1,i,j) == s2) {return true;}}}return false;}
public:string swap (string s,int a,int b) {char tmp = s[b];s[b] = s[a];s[a] = tmp;return s;}
};
- 找出星型图的中心节点
class Solution {public:int findCenter(vector<vector<int>>& edges) {// 中心点出现的次数就是二维数组的行数,每一行都有一个中心点// 注意下面这个target == 点数n - 1,int target = edges.size();int res = 0;vector<int> cnt(target + 2,0);for (auto edge : edges) {++cnt[edge[0]];++cnt[edge[1]];}// 索引范围为1 - target+2,因此直接遍历cnt,找到那个等于行数的索引输出即可。for (int i = 1; i < target + 2; ++i) {if (cnt[i] == target) {return i;}}return -1;}
};
- 最大平均通过率
class Solution {public:double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) {// 优先队列pqpriority_queue<pair<double, int>> h;// 将加入一个好学生增加的通过率提升值和对应的插入的班级索引放入pq for (int i = 0; i < classes.size(); ++i)h.push( pair((classes[i][0] + 1) / (classes[i][1] + 1.0) - classes[i][0] / (double)classes[i][1], i ) );// 每次插班一个好学生,一个一个按照通过率提升来排序再插入进去,最后得到最大结果while (extraStudents--) {// 最大提升的二元组保存pair<double, int> cur = h.top();// 将其出队h.pop();// 对应的班级人数和通过人数都增加1++classes[cur.second][0];++classes[cur.second][1];// 再加入一个通过率提升进去。h.push({(classes[cur.second][0] + 1) / (classes[cur.second][1] + 1.0) - classes[cur.second][0] / (double)classes[cur.second][1], cur.second});}// 计算结果并输出double ans = 0;for (auto i : classes) ans += i[0] / (double)i[1];return ans / classes.size();}
};
- 好子数组的最大分数
class Solution {public:int maximumScore(vector<int>& nums, int k) {// 暴力遍历即可int left = k, right = k;int ans = 0;// 从nums[k]开始遍历for (int i = nums[k]; i >= 1; i--) {// 左右开始移动贪心while (left > 0 && nums[left - 1] >= i) {left--;}while (right < (nums.size() - 1) && nums[right + 1] >= i) {right++;}// 更新最大值ans = max(ans,(right - left + 1) * i);}return ans;}
};
写在最后
- 合理安排时间宝贝
20210314:力扣第 232 场周赛相关推荐
- 20220307:力扣第283场周赛(上)
力扣第283场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 Excel 表中某个范围内的单元格 向数组中追加 K 个整数 思路与算法 第一题直接模拟即可,注意作为char的数字也是可以直接自 ...
- 20220228:力扣第282场周赛(下)
力扣第282场周赛(下) 题目 思路与算法 代码实现 写在最后 题目 完成旅途的最少时间 完成比赛的最少时间 思路与算法 完成旅途的最少时间: 二分模板题,注意初始化左右边界的话,速度会提升很多. 完 ...
- 20220227:力扣第282场周赛(上)
力扣第282场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 统计包含给定前缀的字符串 使两字符串互为字母异位词的最少步骤数 思路与算法 第二题直接并集减去交集,简单的集合运算,当然也可以换C ...
- 20220213:力扣第280场周赛(上)
力扣第280场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 得到 0 的操作数 使数组变成交替数组的最少操作数 思路与算法 简单模拟即可,所谓辗转相除法 哈希处理,然后找到最大和次大值即可. ...
- 20220212:力扣第277场周赛(下)
力扣第277场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 找出数组中的所有孤独数字 基于陈述统计最多好人数 思路与算法 找出数组中的所有孤独数字 按照题意模拟即可,使用map来统计即可. ...
- 20220123:力扣第277场周赛(上)
力扣第277场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 元素计数 按符号重排数组 思路与算法 元素计数 按符号重排数组 无需多言,直接按照题目实现就行了,过于敷衍了这两个题,简单记录一下 ...
- 20220104:力扣第274场周赛(下)
力扣第274场周赛(下) 题目 思路与算法 代码实现 写在最后 题目 摧毁小行星 参加会议的最多员工数 思路与算法 第3题简单模拟即可,注意使用long long格式进行保存累加结果.有二元组的简单比 ...
- 20220103:力扣第274场周赛(上)
力扣第274场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 检查是否所有 A 都在 B 之前 银行中的激光束数量 思路与算法 前两道都是简单的模拟,注意特殊情况的处理即可.第二个就是简单的相 ...
- 20211205:力扣第270场周赛(上)
力扣第270场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 找出 3 位偶数 删除链表的中间节点 思路与算法 找出 3 位偶数:遍历所有数字得到3位数字,前导不为0即表示大于等于100,先用 ...
最新文章
- Linux排障必备命令
- [BUUCTF-pwn]——axb_2019_fmt64
- P2P网络穿越 NAT穿越
- springboot 中使用 Mybatis 注解 配置 详解
- java安全(五)java反序列化
- 人脸识别测试维度定义(欢迎大家拍砖并补充谢谢!)
- pytorch torch.tensor
- @ApiImplicitParam注解的dataType、paramType两个属性的区别?
- linux下的工作目录切换实现
- 如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI
- OPNsense用户手册中文版
- 训练误差和泛化误差、K折交叉验证
- 【校招Verilog快速入门】组合逻辑篇:VL12、4bit超前进位加法器电路
- C语言strtok()函数详解
- 工作流与BPM的区别
- 坐地铁,玩Android
- 反汇编代码分析--函数调用
- 【ant-design】分页器英文如何转中文
- 排气控制系统--中英文翻译
- 多模态情感分析研究综述 论文笔记
热门文章
- 刷爆了!这份被程序员疯传的 Python 神作牛在哪?
- 作为程序员,我在电脑上都装过哪些 Chrome 插件?
- 多地GitHub账号使用受限;Python之父考虑重构解释器;62岁程序员埋逻辑炸弹 | 开发者周刊...
- 万字长文详解如何用 Python 玩转 OpenGL | CSDN 博文精选
- @程序员,不容错过的 Vim 实用技巧请查收!
- 谷歌再现大规模宕机!
- 拿什么重建你,巴黎圣母院?
- 诺基亚的「翻身」之战
- 小米“祭出” AIoT 神器!| 技术头条
- 重磅开源!《阿里巴巴Android开发手册》抢鲜下载!