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]分割所剩的最少的字符数,有状态转移方程:

p [ i ] = { m i n ( p [ i ] , p [ j ] ) , s [ j + 1 , i ] ∈ d i c t i o n a r y , 0 ≤ j < i m i n ( p [ i ] , p [ j ] + i − j ) , s [ j + 1 , i ] ∉ d i c t i o n a r y , 0 ≤ j < i p[i]=\left\{ \begin{matrix} min(p[i],p[j]),& s[j+1,i] \in dictionary, 0\le j< i \\ min(p[i],p[j]+i-j), & s[j+1,i] \notin dictionary, 0\le j< i \end{matrix}\right. p[i]={min(p[i],p[j]),min(p[i],p[j]+i−j),​s[j+1,i]∈dictionary,0≤j<is[j+1,i]∈/dictionary,0≤j<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 场双周赛相关推荐

  1. LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 54 ...

  2. LeetCode第45场双周赛-解题报告

    LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为 ...

  3. 20220219:力扣第72场双周赛题解

    力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...

  4. 20210530:力扣第53场双周赛题解

    力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...

  5. 20201023:力扣第37场双周赛(上)

    力扣第37场双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 删除某些元素后的数组均值 网络信号最好的坐标 思路与算法 第二题直接暴力就可以了,计算每个点的所有偏移量存入list,即以(0,0 ...

  6. 【双周赛】第74场双周赛

    第74场双周赛 6020. 将数组划分成相等数对 6021. 字符串中最多数目的子字符串 6022. 将数组和减半的最少操作次数 6023. 用地毯覆盖后的最少白色砖块 6020. 将数组划分成相等数 ...

  7. 以赛促练-力扣第85场双周赛以及第307场周赛

    文章目录 第85场双周赛 T3.字母移位II T4.删除操作后的最大子段和 第307场周赛 T2.最大回文数字 T3.感染二叉树需要的总时间 T4.找出数组的第K大和 第85场双周赛 T1直接暴力枚举 ...

  8. Leetcode 第 69 场双周赛记录

    Leetcode 第 69 场双周赛记录 1.第一题 5960. 将标题首字母大写 难度:easy 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母.请你按以 ...

  9. 力扣 第 87 场双周赛 ---心态爆炸场

    第 87 场双周赛 T1 - 模拟 class Solution {public:int q[13] = {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, ...

最新文章

  1. Redis简介、特性、优势、应用场景和nosql介绍
  2. LeetCode Algorithm 19. 删除链表的倒数第 N 个结点
  3. openssl java aes_Java AES算法和OpenSSL配对
  4. 【HDU - 6231】K-th Number(二分,思维)
  5. 基于JAVA+SpringBoot+Mybatis+MYSQL的体育馆开放管理系统
  6. [转]C语言嵌入式系统编程修炼之背景篇
  7. html5 textarea 限制字数,如何限制textarea的字符数为225?
  8. C++预编译头文件 – stdafx.h
  9. SQL 之group by查询语句
  10. 凹点匹配 matlab源码,基于凹点搜索的重叠粉体颗粒的自动分离算法
  11. [涛思数据库taosdata学习打卡系列]-001安装
  12. 在Linux系统中的安装cpolar内网穿透
  13. 【智能安全车载中控系统】(一)概览
  14. 认识自我,还需吾日三省吾身
  15. 计算机在摄影应用,计算机X线摄影在临床中的应用
  16. pyinstaller打包exe加入版本和版权信息
  17. 深度学习之目标检测(十一)--DETR详解
  18. Unity 粒子 基础
  19. 使用商用WiFi路由器有哪些优势?
  20. 数据结构-----最长回文子串

热门文章

  1. 新时达工业机器人技术储备_建成年产万台机器人工厂后, 新时达在想些什么?...
  2. 牛客小白月赛28 B.牛牛和牛可乐的赌约2
  3. OpenCV级联分类器训练与使用实战教程-贾志刚-专题视频课程
  4. 每秒解析千兆字节的JSON解析器开源,秒杀一大波解析器!
  5. 【Windows】如何删除磁盘管理中的恢复分区
  6. matlab 经济计量工具箱,matlab计量工具箱Lesage 本程序集合为空间计量经济学 - 下载 - 搜珍网...
  7. HCNP-路由交换:RIP
  8. python绘制国际象棋_用Python编写一个国际象棋AI程序
  9. 腾讯案例实战!聊聊设计中「需求」的正确打开方式
  10. DIV 元素和 SPAN 元素的区别?