剑指offer之矩阵中的路径
題目描述:
請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那么該路徑不能再次進入該格子。例如,在下面的3×4的矩陣中包含一條字符串“bfce”的路徑(路徑中的字母用加粗標出)。
[[“a”,“b”,“c”,“e”],
[“s”,“f”,“c”,“s”],
[“a”,“d”,“e”,“e”]]
但矩陣中不包含字符串“abfb”的路徑,因為字符串的第一個字符b占據了矩陣中的第一行第二個格子之后,路徑不能再次進入這個格子。
示例 1:
輸入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”
輸出:true
示例 2:
輸入:board = [[“a”,“b”],[“c”,“d”]], word = “abcd”
輸出:false
解題思路:
對于尋找路徑問題,很容易想到廣度或者深度優先搜索,這道題采用深度優先搜索和回溯操作。
大致的思想為:對矩陣中的每一個位置進行深度優先搜索。為了保證對某一個位置搜索時路徑的不重復,需要對訪問過的位置進行標記(程序中將該位置賦值為’/’)。由于不同位置進行深度優先搜索時,會重復訪問某些位置,因此需要回溯操作,即在執行完某一位置的搜索后,將該標記了的位置的值賦值回其原來的值。
總結
以上是生活随笔為你收集整理的剑指offer之矩阵中的路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL多个线程同时写数据_多个线程可
- 下一篇: 树状数组的相关知识 及 求逆序对的运用