周赛413场 个人总结
第1题
代码
"""
根据a的ascii码值是97 奇数
黑色的规律是:
a1是 97 + 1 = 偶数
b2 是 98 + 2 =偶数
c1 是99 +1 = 偶数
d2 是100 + 2 = 偶数
...
所以,偶数为黑色
===
白色的规律
a2 = 97 +2 = 奇数
b1 = 98 +1 = 奇数
....
所以,奇数为白色
"""
class Solution:
def checkTwoChessboards(self, c1: str, c2: str) -> bool:
a = (ord(c1[0]) + ord(c1[1])) % 2 # 取余数 如果是0说明是黑色
b = (ord(c2[0]) + ord(c2[1])) % 2
# 如果一样的话,奇偶是一样的
# 黑:黑 = 0:0
# 白:白 = 1:1
# 黑:白 = 1:0 or 0:1
return a == b
截图:
总结:
- 学会用ord转换为ascii码来计算
第2题
代码
class Solution:
def resultsArray(self, queries: List[List[int]], k: int) -> List[int]:
ans = [-1] * len(queries)
h = []
for i, (x, y) in enumerate(queries):
heappush(h, -abs(x) - abs(y)) # 加负号变成最大堆
if len(h) > k:
heappop(h)
if len(h) == k:
ans[i] = -h[0]
return ans
总结:
- 学会最大堆(本题需要维护一个数组结构,前k项,每次都可以弹出最大值)
- 学会enumerate遍历方式
第3题
跳过
第4题
跳过
题目跳转:
https://leetcode.cn/contest/weekly-contest-413/