第 306 场周赛 总结
矩阵中的局部最大值
就是笨办法,一个一个遍历过去计算存储
class Solution:
def largestLocal(self, grid: List[List[int]]) -> List[List[int]]:
def findMax(tarx,tary):
Max=-1
for i in range(tarx,tarx+3):
for j in range(tary,tary+3):
if grid[i][j]>Max:
Max=grid[i][j]
return Max
n = len(grid[0])
res=[]
for x in range(n-2):
temp=[]
for y in range(n-2):
temp.append(findMax(x,y))
res.append(temp)
return res
边积分最高的节点
dict 存储数据后,用sorted自定义排序( lambda函数真是方便啊 )
class Solution:
def edgeScore(self, edges: List[int]) -> int:
res = defaultdict(int)
for step,e in enumerate(edges):
res[e]+=step
res = sorted(res.items(),key=lambda x:(-x[1],x[0]))
# print(res)
return res[0][0]
根据模式串构造最小数字
首先自然升序排序,遍历时对D的连续串反转即可
class Solution:
def smallestNumber(self, pattern: str) -> str:
n=len(pattern)
res=[str(i) for i in range(1,n+2)]
i=0
while i<n:
pos=i
while i<n and pattern[i]=='D':
i+=1
res[pos:i+1]=reversed(res[pos:i+1])
i+=1
return "".join(res)
统计特殊整数
想用手算的方法推的,但代码写了好长没a出来,
看了评论区要用 数位dp ,我直接一个懵逼,
等我先去学学再来a这道题
总结
orz