• LeetCode笔记:Biweekly Contest 81

    • 1. 题目一

      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接: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相关推荐

  1. 【LeetCode】Biweekly Contest 10 总结

    一.概述 做的很差劲,至少可以拿出半小时看第四题的,结果只ac了第一题和第三题.所以对自己很生气,要总结一下经验教训. 二.分析 1.第一题 输入三个有序数组,找相同元素. 我是个傻逼,为什么这么说呢 ...

  2. LeetCode笔记:Biweekly Contest 56(补发)

    LeetCode笔记:Biweekly Contest 56 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  3. LeetCode笔记:Biweekly Contest 38 比赛记录

    LeetCode笔记:Biweekly Contest 38 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...

  4. LeetCode笔记:Biweekly Contest 83

    LeetCode笔记:Biweekly Contest 83 0. 小结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. ...

  5. LeetCode笔记:Biweekly Contest 55(补发)

    LeetCode笔记:Biweekly Contest 55 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  6. LeetCode笔记:Biweekly Contest 68

    LeetCode笔记:Biweekly Contest 68 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  7. LeetCode笔记:Biweekly Contest 65

    LeetCode笔记:Biweekly Contest 65 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  8. LeetCode笔记:Biweekly Contest 33 比赛记录

    LeetCode笔记:Biweekly Contest 33 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...

  9. LeetCode笔记:Biweekly Contest 94

    LeetCode笔记:Biweekly Contest 94 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

最新文章

  1. 3D场景高级合成技术学习
  2. SURF角点检测(python)
  3. VS.Net 开发 MSN一样缓慢出来的提示信息的方法
  4. mysql运维高级_Mysql DBA 高级运维学习之路-mysql建表语句及表知识
  5. 在WinAPI环境下获得1小时前系统时间
  6. jupyter中保存图片_露哥的摸爬滚打| Jupyter从零开始
  7. 【Python爬虫】信息组织与提取方法
  8. myeclipse中对jar包中的类热部署调试方法介绍
  9. php 运行thinkphp,thinkPHP cli命令行运行PHP代码
  10. 符号“”和const在函数里不同位置的用法
  11. 组合数学+概率,期望+生成函数一文全精通
  12. Validation参数校验注解
  13. Perfmon监控Windows进程性能
  14. LogLoss的公式演化
  15. 并查集——银河英雄传说
  16. 在redhat8中安装ansible
  17. 我的2021年度书单(主要教你面试怎么装B)
  18. HTML5学习笔记(2020年11月)
  19. 新媒体运营之如此微信养号不易封
  20. 从数据中台到AI中台

热门文章

  1. B - Chessboard
  2. P1648看守 题解
  3. Lillian Shao用十年经验解读中国“公有云”落地为什么这么难?
  4. 跳槽换单休的工作,要价多少才不亏?
  5. 「 Dart 」一文了解 Dart 基础知识
  6. 【案例】js 获取今天/昨天/近一周/一月/一年的日期,时间戳转日期,
  7. HDU 6230 (ManacherBIT)
  8. Java tif多页文件转jpg问题,Decoding of old style JPEG-in-TIFF data is not supported问题
  9. ROC曲线与AUC指标理解
  10. 你需要知道的前端跨域知识(同源、正向代理、反向代理、前端代理、nignx反向代理)