Study Plan For Algorithms - Part40

WindMay發表於2024-09-23

1. 單詞搜尋
給定一個 m x n 二維字元網格 board 和一個字串單詞 word 。如果 word 存在於網格中,返回 true ;否則,返回 false 。

class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        rows = len(board)
        cols = len(board[0])
        visited = [[False for _ in range(cols)] for _ in range(rows)]

        def dfs(i, j, index):
            if index == len(word):
                return True
            if i < 0 or i >= rows or j < 0 or j >= cols or visited[i][j] or board[i][j]!= word[index]:
                return False
            visited[i][j] = True
            found = dfs(i + 1, j, index + 1) or dfs(i - 1, j, index + 1) or dfs(i, j + 1, index + 1) or dfs(i, j - 1, index + 1)
            visited[i][j] = False
            return found

        for i in range(rows):
            for j in range(cols):
                if dfs(i, j, 0):
                    return True
        return False

2. 刪除有序陣列中的重複項 II
給定一個有序陣列 nums ,原地 刪除重複出現的元素,使得出現次數超過兩次的元素只出現兩次 ,返回刪除後陣列的新長度。

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        i = 0
        for num in nums:
            if i < 2 or num > nums[i - 2]:
                nums[i] = num
                i += 1
        return i

相關文章