当前位置:   article > 正文

美团2023.8.12场秋招笔试算法题_小美的字符串匹配度

小美的字符串匹配度

一:外卖订单

认真处理特殊情况即可 

二:小美的字符串匹配度

前缀和+双指针

三: 小美的树上染色

树型dp

 四:小美的排列询问

哈希表

五:小美的排列构造

 六:小美的字符串变换

并查集 + 遍历

  1. n = int(input())
  2. origin = list(input())
  3. res = float('inf')
  4. class UF:
  5. def __init__(self, n) -> None:
  6. self.parent = []
  7. self.index = []
  8. for i in range(n):
  9. self.parent.append(i)
  10. self.index.append(i)
  11. def find(self, x) -> int:
  12. if x != self.parent[x]:
  13. x = self.find(self.parent[self.parent[x]])
  14. return x
  15. def union(self, x, y) -> None:
  16. px = self.find(x)
  17. py = self.find(y)
  18. if px == py: return
  19. self.parent[py] = px
  20. def solve(grid) -> int:
  21. n = len(grid)
  22. m = len(grid[0])
  23. uf = UF(n * m)
  24. ret = set()
  25. for r in range(n):
  26. for c in range(m):
  27. for x, y in [[r-1, c], [r+1, c], [r, c-1], [r, c+1]]:
  28. if 0 <= x < n and 0 <= y < m:
  29. if grid[r][c] == grid[x][y]:
  30. uf.union(r*m + c, x*m + y)
  31. for i in range(n*m):
  32. ret.add(uf.find(i))
  33. return len(ret)
  34. for r in range(1, n): # r行c列
  35. if n % r == 0:
  36. c = n // r
  37. grid = []
  38. for i in range(r):
  39. grid.append(origin[i*c: i*c + c])
  40. res = min(res, solve(grid))
  41. if n == 1:
  42. print(1)
  43. else:
  44. print(res)

七:切蛋糕

八: 小美的好矩阵

这题暴力只能过90%的例子呜呜呜

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/802290
推荐阅读
相关标签
  

闽ICP备14008679号