LeetCode 1463 Cherry Pickup II - python

Поділитися
Вставка
  • Опубліковано 15 гру 2024

КОМЕНТАРІ • 2

  • @antm9957
    @antm9957 10 місяців тому +1

    Привет! Вопрос по условию задачи. Говоришь, что ни один робот не собирает вишню, если они одновременно попадают на одну клетку. В условии выхода из рекурсии тоже это прописал. Но в задании "When both robots stay in the same cell, only one takes the cherries.", т.е. из клетки вишню всё же забирает один из них, а другой уходит ни с чем. Я в своём решении это учел и оно проходит (см. current_score):
    class Solution:
    def cherryPickup(self, grid: List[List[int]]) -> int:
    border = len(grid[0])
    @cache
    def helper(row, r1, r2):
    if row >= len(grid):
    return 0
    else:
    current_score = grid[row][r1] + grid[row][r2] if r1 != r2 else grid[row][r1]
    next_score = max([helper(row+1, i, j) for i in range(max(r1 - 1, 0), min(r1 + 2, border)) for j in range(max(r2 - 1, 0), min(r2 + 2, border))])
    return current_score + next_score
    return helper(0, 0, border - 1)
    Может у них нет testcases, где маршрут с максимальным количеством вишен лежит через общую клетку?
    К слову, твой код 98% по скорости и 5% по памяти, а мой 70% и 36% соответственно.

    • @RunningProgrammer
      @RunningProgrammer  10 місяців тому

      У меня исключается вариант когда они попадают на одну клетку. Эта клетка будет обработана в другом варианте, где один робот на нее попадает, а второй нет