LeetCode笔记:Biweekly Contest 81
- LeetCode笔记:Biweekly Contest 81
- 1. 题目一
- 1. 解题思路
- 2. 代码实现
- 2. 题目二
- 1. 解题思路
- 2. 代码实现
- 3. 题目三
- 1. 解题思路
- 2. 代码实现
- 4. 题目四
- 1. 解题思路
- 2. 代码实现
- 1. 题目一
- 比赛链接:https://leetcode.com/contest/biweekly-contest-81/
1. 题目一
给出题目一的试题链接如下:
- 2315. Count Asterisks
1. 解题思路
这一题思路上还是比较直接的,按照题意找出成对的|
组成的pair,然后忽略掉其中的*
,然后统计位置上的*
即可。
2. 代码实现
给出python代码实现如下:
class Solution:def countAsterisks(self, s: str) -> int:res, cnt, bars = 0, 0, 0for ch in s:if ch == "|":if bars % 2 == 0:res += cntcnt = 0bars += 1elif ch == "*":cnt += 1return res + cnt
提交代码评测得到:耗时32ms,占用内存13.8MB。
2. 题目二
给出题目二的试题链接如下:
- 2316. Count Unreachable Pairs of Nodes in an Undirected Graph
1. 解题思路
这一题我的思路就是找到所有的相互之间存在连接的点的集合,然后对于每一个集合内的点,其与其他集合之间的任一点都可以构成一个不连通的点对。
由此,只要能够找出这些互通的点的集合,那么题目就迎刃而解了。
而至于如何去找到这些互通的点的集合,我这边的一个实现思路是通过DSU进行实现,关于DSU的部分,网上应该挺多了,有兴趣的读者也可以参考我之前写的博客【经典算法:并查集(DSU)结构简介】,这里就不过多赘述了。
2. 代码实现
给出python代码实现如下:
class DSU:def __init__(self, n):self.root = [i for i in range(n)]def find(self, k):if self.root[k] == k:return kself.root[k] = self.find(self.root[k])return self.root[k]def union(self, a, b):x = self.find(a)y = self.find(b)if x != y:self.root[y] = xreturnclass Solution:def countPairs(self, n: int, edges: List[List[int]]) -> int:dsu = DSU(n)for u, v in edges:dsu.union(u, v)cnt = defaultdict(int)for i in range(n):cnt[dsu.find(i)] += 1 res = 0for u in cnt:res += cnt[u] * (n - cnt[u])return res // 2
提交代码评测得到:耗时4812ms,占用内存73.9MB。
3. 题目三
给出题目三的试题链接如下:
- 2317. Maximum XOR After Operations
1. 解题思路
这一题还是蛮有意思的,考察变换 a ∧ ( a ⊕ x ) a \land (a \oplus x) a∧(a⊕x),它能够将位上的1修改为0或者1,但是位上的0始终还是0。
因此,只要存在某一个数的某一位上是1,那么我们总能够使得最终的结果在这一位上保持为1;反之,如果某一位上所有的数都为0,那么无论我们怎么取值,都无法令最后的结果中这一位上为1。
综上,我们就可以获得我们最终的答案。
2. 代码实现
给出python的代码实现如下:
class Solution:def maximumXOR(self, nums: List[int]) -> int:digits = [0 for _ in range(32)]for x in nums:idx = 0while x != 0:digits[31-idx] += x % 2x = x // 2idx += 1res = 0for d in digits:if d > 0:res = res * 2 + 1else:res = res * 2return res
提交代码评测得到:耗时2595ms,占用内存23.9MB。
4. 题目四
给出题目四的试题链接如下:
- 2318. Number of Distinct Roll Sequences
1. 解题思路
这一题思路上反而比较直接,就是一个动态规划就完事了,这里就不过多展开了,稍微注意一下边界条件就行。
2. 代码实现
给出python代码实现如下:
class Solution:def distinctSequences(self, n: int) -> int:MOD = 10**9 + 7@lru_cache(None)def gcd(a, b):if a < b:return gcd(b, a)elif b == 0:return aa, b = b, a%breturn gcd(a, b)@lru_cache(None)def dp(idx, pre1, pre2):if idx >= n:return 1elif idx == 0:return sum(dp(1, i, 0) for i in range(1, 7)) % MODelif idx == 1:res = 0for i in range(1, 7):if i != pre1 and gcd(i, pre1) == 1:res = (res + dp(idx+1, i, pre1)) % MODreturn res % MODres = 0for i in range(1, 7):if i != pre1 and gcd(i, pre1) == 1 and i != pre2:res = (res + dp(idx+1, i, pre1)) % MODreturn res % MODreturn dp(0, -1, -1)
提交代码评测得到:耗时5259ms,占用内存528.3MB。
LeetCode笔记:Biweekly Contest 81相关推荐
- 【LeetCode】Biweekly Contest 10 总结
一.概述 做的很差劲,至少可以拿出半小时看第四题的,结果只ac了第一题和第三题.所以对自己很生气,要总结一下经验教训. 二.分析 1.第一题 输入三个有序数组,找相同元素. 我是个傻逼,为什么这么说呢 ...
- LeetCode笔记:Biweekly Contest 56(补发)
LeetCode笔记:Biweekly Contest 56 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 38 比赛记录
LeetCode笔记:Biweekly Contest 38 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...
- LeetCode笔记:Biweekly Contest 83
LeetCode笔记:Biweekly Contest 83 0. 小结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. ...
- LeetCode笔记:Biweekly Contest 55(补发)
LeetCode笔记:Biweekly Contest 55 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 68
LeetCode笔记:Biweekly Contest 68 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 65
LeetCode笔记:Biweekly Contest 65 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
- LeetCode笔记:Biweekly Contest 33 比赛记录
LeetCode笔记:Biweekly Contest 33 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...
- LeetCode笔记:Biweekly Contest 94
LeetCode笔记:Biweekly Contest 94 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...
最新文章
- 3D场景高级合成技术学习
- SURF角点检测(python)
- VS.Net 开发 MSN一样缓慢出来的提示信息的方法
- mysql运维高级_Mysql DBA 高级运维学习之路-mysql建表语句及表知识
- 在WinAPI环境下获得1小时前系统时间
- jupyter中保存图片_露哥的摸爬滚打| Jupyter从零开始
- 【Python爬虫】信息组织与提取方法
- myeclipse中对jar包中的类热部署调试方法介绍
- php 运行thinkphp,thinkPHP cli命令行运行PHP代码
- 符号“”和const在函数里不同位置的用法
- 组合数学+概率,期望+生成函数一文全精通
- Validation参数校验注解
- Perfmon监控Windows进程性能
- LogLoss的公式演化
- 并查集——银河英雄传说
- 在redhat8中安装ansible
- 我的2021年度书单(主要教你面试怎么装B)
- HTML5学习笔记(2020年11月)
- 新媒体运营之如此微信养号不易封
- 从数据中台到AI中台
热门文章
- B - Chessboard
- P1648看守 题解
- Lillian Shao用十年经验解读中国“公有云”落地为什么这么难?
- 跳槽换单休的工作,要价多少才不亏?
- 「 Dart 」一文了解 Dart 基础知识
- 【案例】js 获取今天/昨天/近一周/一月/一年的日期,时间戳转日期,
- HDU 6230 (ManacherBIT)
- Java tif多页文件转jpg问题,Decoding of old style JPEG-in-TIFF data is not supported问题
- ROC曲线与AUC指标理解
- 你需要知道的前端跨域知识(同源、正向代理、反向代理、前端代理、nignx反向代理)