leetcode79 單詞搜尋 medium

2021-09-25 17:30:18 字數 954 閱讀 4245

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。

單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。

示例:board =

[['a','b','c','e'],

['s','f','c','s'],

['a','d','e','e']

]給定 word = "abcced", 返回 true.

給定 word = "see", 返回 true.

給定 word = "abcb", 返回 false.

典型的深度優先遍歷 dfs 的應用,原二維陣列就像是乙個迷宮,可以上下左右四個方向行走,我們以二維陣列中每乙個數都作為起點和給定字串做匹配,我們還需要乙個和原陣列等大小的 visited 陣列,是 bool 型的,用來記錄當前位置是否已經被訪問過,因為題目要求乙個 cell 只能被訪問一次。如果二維陣列 board 的當前字元和目標字串 word 對應的字元相等,則對其上下左右四個鄰字元分別呼叫 dfs 的遞迴函式,只要有乙個返回 true,那麼就表示可以找到對應的字串,否則就不能找到。

兩種實現,第一種我的,第二種參考別人的,都可以把

class solution ,dy[4]=;

bool exist(vector>& board, string word)

visited[x][y]=false;

return false;

}};

class solution 

}return false;

}bool search(vector>& board, string word, int idx, int i, int j, vector>& visited)

};

leetcode 79 單詞搜尋

本題算是乙個組合類的題,也類似於深度優先搜尋演算法 設定乙個與字母構成的陣列大小相同的陣列,用來儲存某個位置的字母是否被訪問過,標註為1表示已被訪問過,避免重複 每次要看i,j位置上下左右的字母是否等於單詞第t個位置的字母 進行深度優先搜尋 bool find std vector board,st...

leetcode 79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回t...

Leetcode 79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...