第 105 场双周赛
A 购买两块巧克力
class Solution {public:int buyChoco(vector<int> &prices, int money) {int res = -1;int n = prices.size();for (int i = 0; i < n; i++)for (int j = i + 1; j < n; j++)if (money - prices[i] - prices[j] >= 0)res = max(res, money - prices[i] - prices[j]);return res == -1 ? money : res;}
};
B 字符串中的额外字符
动态规划: 定义p[i]为 s [ 0 , i ] s[0,i] s[0,i]分割所剩的最少的字符数,有状态转移方程:
class Solution {public:int minExtraChar(string s, vector<string> &dictionary) {set<string> vis;for (auto &di: dictionary)vis.insert(di);int n = s.size();int p[n];for (int i = 0; i < n; i++) {p[i] = vis.count(s.substr(0, i + 1)) ? 0 : i + 1;for (int j = 0; j < i; j++) {if (vis.count(s.substr(j + 1, i - j)))p[i] = min(p[i], p[j]);elsep[i] = min(p[i], p[j] + i - j);}}return p[n - 1];}
};
C 一个小组的最大实力值
分类讨论: 正数全部用上,若有偶数个负数则全用,若有奇数个负数则用除绝对值最小的负数之外的负数
class Solution {public:typedef long long ll;long long maxStrength(vector<int> &nums) {vector<ll> neg, pos;int have0 = 0;for (auto x: nums)if (x > 0)pos.push_back(x);else if (x < 0)neg.push_back(x);elsehave0 = 1;if (pos.empty() && neg.empty())return 0;if (pos.empty() && neg.size() == 1)return have0 ? 0 : neg[0];ll res = 1;for (auto x: pos)res *= x;for (auto x: neg)res *= x;if (neg.size() % 2 == 1)res /= *max_element(neg.begin(), neg.end());return res;}
};
D 最大公约数遍历
质因数分解+并查集: 先求数组所有元素的所有质因数,将这些质因数添加到数组末尾,并初始化并查集,再遍历数组中的原始元素,将元素与其质因数进行集合和并,最终若只剩一个集合则说明任意两个不同下标是连通的
class Solution {public:vector<int> p;//并查集中记录父节点int find(int x) {//查询父节点并路径压缩return p[x] == x ? x : p[x] = find(p[x]);}void comb(int x, int y) {//合并集合int px = find(x);int py = find(y);if (px == py)return;p[py] = px;}bool canTraverseAllPairs(vector<int> &a) {if (count(a.begin(), a.end(), 1))return a.size() == 1;int n = a.size();set<int> pri;for (auto x: a) {for (int i = 2; i * i <= x; i++) {//质因数分解if (x % i == 0) {pri.insert(i);while (x % i == 0)x /= i;}}if (x != 1)pri.insert(x);}unordered_map<int, int> id;//记录质因数对应的下标for (auto x: pri) {a.push_back(x);id[x] = a.size() - 1;}int m = a.size();p = vector<int>(m);iota(p.begin(), p.end(), 0);//并查集初始化for (int j = 0; j < n; j++) {int x = a[j];for (int i = 2; i * i <= x; i++) {if (x % i == 0) {comb(j, id[i]);//合并集合while (x % i == 0)x /= i;}}if (x != 1)comb(j, id[x]);//合并集合}for (int i = 1; i < n; i++)if (find(i) != find(0))return false;return true;}
};
第 105 场双周赛相关推荐
- LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)
文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 54 ...
- LeetCode第45场双周赛-解题报告
LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为 ...
- 20220219:力扣第72场双周赛题解
力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...
- 20210530:力扣第53场双周赛题解
力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...
- 20201023:力扣第37场双周赛(上)
力扣第37场双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 删除某些元素后的数组均值 网络信号最好的坐标 思路与算法 第二题直接暴力就可以了,计算每个点的所有偏移量存入list,即以(0,0 ...
- 【双周赛】第74场双周赛
第74场双周赛 6020. 将数组划分成相等数对 6021. 字符串中最多数目的子字符串 6022. 将数组和减半的最少操作次数 6023. 用地毯覆盖后的最少白色砖块 6020. 将数组划分成相等数 ...
- 以赛促练-力扣第85场双周赛以及第307场周赛
文章目录 第85场双周赛 T3.字母移位II T4.删除操作后的最大子段和 第307场周赛 T2.最大回文数字 T3.感染二叉树需要的总时间 T4.找出数组的第K大和 第85场双周赛 T1直接暴力枚举 ...
- Leetcode 第 69 场双周赛记录
Leetcode 第 69 场双周赛记录 1.第一题 5960. 将标题首字母大写 难度:easy 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母.请你按以 ...
- 力扣 第 87 场双周赛 ---心态爆炸场
第 87 场双周赛 T1 - 模拟 class Solution {public:int q[13] = {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, ...
最新文章
- Redis简介、特性、优势、应用场景和nosql介绍
- LeetCode Algorithm 19. 删除链表的倒数第 N 个结点
- openssl java aes_Java AES算法和OpenSSL配对
- 【HDU - 6231】K-th Number(二分,思维)
- 基于JAVA+SpringBoot+Mybatis+MYSQL的体育馆开放管理系统
- [转]C语言嵌入式系统编程修炼之背景篇
- html5 textarea 限制字数,如何限制textarea的字符数为225?
- C++预编译头文件 – stdafx.h
- SQL 之group by查询语句
- 凹点匹配 matlab源码,基于凹点搜索的重叠粉体颗粒的自动分离算法
- [涛思数据库taosdata学习打卡系列]-001安装
- 在Linux系统中的安装cpolar内网穿透
- 【智能安全车载中控系统】(一)概览
- 认识自我,还需吾日三省吾身
- 计算机在摄影应用,计算机X线摄影在临床中的应用
- pyinstaller打包exe加入版本和版权信息
- 深度学习之目标检测(十一)--DETR详解
- Unity 粒子 基础
- 使用商用WiFi路由器有哪些优势?
- 数据结构-----最长回文子串
热门文章
- 新时达工业机器人技术储备_建成年产万台机器人工厂后, 新时达在想些什么?...
- 牛客小白月赛28 B.牛牛和牛可乐的赌约2
- OpenCV级联分类器训练与使用实战教程-贾志刚-专题视频课程
- 每秒解析千兆字节的JSON解析器开源,秒杀一大波解析器!
- 【Windows】如何删除磁盘管理中的恢复分区
- matlab 经济计量工具箱,matlab计量工具箱Lesage 本程序集合为空间计量经济学 - 下载 - 搜珍网...
- HCNP-路由交换:RIP
- python绘制国际象棋_用Python编写一个国际象棋AI程序
- 腾讯案例实战!聊聊设计中「需求」的正确打开方式
- DIV 元素和 SPAN 元素的区别?