Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크
주어진 xn
문자 그리드 판자
그리고 문자열 단어
, 반품 진실
만약에 단어
그리드에 존재합니다.
단어는 연속적으로 인접한 셀의 문자로 구성될 수 있으며, 인접한 셀은 수평 또는 수직으로 이웃합니다. 동일한 문자 셀은 두 번 이상 사용될 수 없습니다.
예시 1:
입력: 보드 = [["A","B","C","E"],["S","F","C","S"],["A","D","E ","E"]], 단어 = "ABCCED" 산출: 진실
예 2:
입력: 보드 = [["A","B","C","E"],["S","F","C","S"],["A","D","E ","E"]], 단어 = "보다" 산출: 진실
예시 3:
입력: 보드 = [["A","B","C","E"],["S","F","C","S"],["A","D","E ","E"]], 단어 = "ABCB" 산출: 거짓
제약:
m == 보드 길이
n = 보드[i].길이
1 <= m, n <= 6
1 <= 단어 길이 <= 15
판자
그리고단어
소문자와 대문자로만 구성됩니다.
후속 조치: 더 큰 솔루션을 더 빠르게 만들기 위해 검색 정리를 사용할 수 있습니까? 판자
?
목차
비녀장파이썬
# 시간 복잡도: O(c*3^l) # 공간 복잡도: O(l) from typing import List class 솔루션: def exist(self, board: List[List[str]], word: str) -> bool: def backtrack(suffix: str, r: int, c: int): len(suffix) == 0: 0 <= r < ROW 및 0 <= c < COL이 아니면 True를 반환합니다. 그렇지 않으면 suffix[0] ! = board[r][c]: False를 반환합니다. result = False originalChar = board[r][c] board[r][c] = "#" for dr,dc in ([1,0],[0,1 ],[-1,0],[0,-1]): result = backtrack(suffix[1:], r+dr, c+dc) result: break board[r][c] = originalChar result를 반환합니다. ROW = len(board) COL = len(board[0]) for row in range(ROW): for col in range(COL): if backtrack(word, row, col): true를 반환하고 False를 반환합니다. board = [[" A, B, C, E], [S, F, C, S], [A, D, E, E] ]] 단어 = "ABCCED" print(Solution().exist(board, word))