国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

劍指 Offer 12. 矩陣中的路徑(回溯 DFS)

這篇具有很好參考價(jià)值的文章主要介紹了劍指 Offer 12. 矩陣中的路徑(回溯 DFS)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

題目描述

給定一個(gè) m x n 二維字符網(wǎng)格 board 和一個(gè)字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。
單詞必須按照字母順序,通過(guò)相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許被重復(fù)使用。

劍指 Offer 12. 矩陣中的路徑(回溯 DFS),leetcode,矩陣,深度優(yōu)先

例如,在下面的 3×4 的矩陣中包含單詞 “ABCCED”(單詞中的字母已標(biāo)出)。
示例 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

思路分析

一道非常經(jīng)典的矩陣搜索題。

直接回溯。

1.確定循環(huán)體

肯定是要遍歷矩陣中的每一個(gè)格子,以每一個(gè)格子為起點(diǎn)向外搜索。


        for i in range(len(board)):
            for j in range(len(board[0])):
    

2.確定回溯體參數(shù)

顯然需要當(dāng)前遍歷的格子下標(biāo)i和j,還需要當(dāng)前遍歷的單詞下標(biāo)k。
def dfs(i,j,k):

3.確定回溯體

在回溯的過(guò)程中,如果遇到邊界,則立即回退,遇到不符合單詞的字符,也立即回退。

if not 0<=i<len(board) or not 0<= j<len(board[0])  or board[i][j] != word[k]:
                return False           

當(dāng)前遍歷單詞的下標(biāo)k如果遍歷到最后了,說(shuō)明此時(shí)找到了完整的單詞:

if len(word)-1 == k:
                return True

后面就是連續(xù)的三步,
1,首先將所有遍歷過(guò)的格子都弄成空,防止重復(fù)遍歷。
2. 回溯尋找當(dāng)前格子的四周。
3. 回退的時(shí)候?qū)⒆兛盏母褡幼兓卦瓉?lái)的數(shù)值。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-650124.html

            board[i][j] = ' '

            res = dfs(i-1,j,k+1) or dfs(i,j-1,k+1) or dfs(i+1,j,k+1) or dfs(i,j+1,k+1)

            board[i][j] = word[k]

完整代碼

class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        # k為當(dāng)前word遍歷的下標(biāo)
        def dfs(i,j,k):
            if not 0<=i<len(board) or not 0<= j<len(board[0])  or board[i][j] != word[k]:
                return False
            if len(word)-1 == k:
                return True
            
            board[i][j] = ' '

            res = dfs(i-1,j,k+1) or dfs(i,j-1,k+1) or dfs(i+1,j,k+1) or dfs(i,j+1,k+1)

            board[i][j] = word[k]

            return res 


        for i in range(len(board)):
            for j in range(len(board[0])):
                if dfs(i,j,0):
                    return True
        return False







到了這里,關(guān)于劍指 Offer 12. 矩陣中的路徑(回溯 DFS)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 劍指 Offer 12. 矩陣中的路徑 / LeetCode 79. 單詞搜索(深度優(yōu)先搜索)

    劍指 Offer 12. 矩陣中的路徑 / LeetCode 79. 單詞搜索(深度優(yōu)先搜索)

    鏈接:劍指 Offer 12. 矩陣中的路徑;LeetCode 79. 單詞搜索 難度:中等 給定一個(gè) m x n 二維字符網(wǎng)格 board 和一個(gè)字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過(guò)相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相

    2024年02月02日
    瀏覽(28)
  • 劍指 Offer 12 矩陣中的路徑

    劍指 Offer 12 矩陣中的路徑

    題目: 給定一個(gè) m x n 二維字符網(wǎng)格 board 和一個(gè)字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過(guò)相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許被重

    2024年02月09日
    瀏覽(22)
  • 劍指offer12.矩陣中的路徑

    劍指offer12.矩陣中的路徑

    ?太難了,想了一會(huì)兒沒(méi)有頭緒就直接看了題解。 題解用的是回溯算法,check(i,j,k)表示從board[i][j]位置開(kāi)始能否搜索到word第k個(gè)字符后面的字串,能搜索到返回true否則返回false。如果board[i][j] != word[k] 返回false。如果相等且是最后一個(gè)字符返回true,如果相等但不是最后一個(gè)字符

    2024年02月13日
    瀏覽(18)
  • 劍指Offer12.矩陣中的路徑 C++

    劍指Offer12.矩陣中的路徑 C++

    給定一個(gè) m x n 二維字符網(wǎng)格 board 和一個(gè)字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。單詞必須按照字母順序,通過(guò)相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許被重復(fù)使用。

    2024年02月14日
    瀏覽(20)
  • 用 Go 劍指 Offer 12. 矩陣中的路徑

    用 Go 劍指 Offer 12. 矩陣中的路徑

    給定一個(gè)?m x n 二維字符網(wǎng)格?board 和一個(gè)字符串單詞?word 。如果?word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過(guò)相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許被重復(fù)使

    2023年04月10日
    瀏覽(15)
  • 劍指offer12 矩陣中的路徑 13 機(jī)器人的運(yùn)動(dòng)范圍 34.二叉樹(shù)中和為某一值得路徑

    劍指offer12 矩陣中的路徑 13 機(jī)器人的運(yùn)動(dòng)范圍 34.二叉樹(shù)中和為某一值得路徑

    //寫的有點(diǎn)問(wèn)題,暫時(shí)想不到怎么改,先放著,通過(guò)用例71/83 卡住的是abcd 但是改了又有問(wèn)題 無(wú)語(yǔ) 看了 答案 都寫不對(duì) 在類成員里面定義了row和col 就不要重復(fù)定義了 不然不知道為什么就開(kāi)始發(fā)瘋 先貼出蠢貨寫出來(lái)的東西 審題也審不明白 機(jī)器人只能上下左右走 不能一行一行

    2024年02月15日
    瀏覽(25)
  • 【leetcode刷題之路】劍指Offer(3)——搜索與回溯算法

    7 搜索與回溯算法 7.1 【BFS】劍指 Offer 32 - I - 從上到下打印二叉樹(shù) https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/ ??這里借助隊(duì)列來(lái)實(shí)現(xiàn)廣度優(yōu)先遍歷,由于需要訪問(wèn)每一層的節(jié)點(diǎn),而且這一層訪問(wèn)才可以訪問(wèn)下一層,所以可以考慮隊(duì)列的先進(jìn)先出,先把每一層的節(jié)

    2024年02月13日
    瀏覽(47)
  • 劍指 Offer 29. 順時(shí)針打印矩陣 / LeetCode 54. 螺旋矩陣(模擬)

    劍指 Offer 29. 順時(shí)針打印矩陣 / LeetCode 54. 螺旋矩陣(模擬)

    鏈接:劍指 Offer 29. 順時(shí)針打印矩陣;LeetCode 54. 螺旋矩陣 難度:中等 給你一個(gè) m 行 n 列的矩陣 matrix ,請(qǐng)按照 順時(shí)針螺旋順序 ,返回矩陣中的所有元素。 示例 1: 輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,2,3,6,9,8,7,4,5] 示例 2: 輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 輸出:

    2024年02月15日
    瀏覽(22)
  • 【LeetCode-簡(jiǎn)單】劍指 Offer 29. 順時(shí)針打印矩陣(詳解)

    【LeetCode-簡(jiǎn)單】劍指 Offer 29. 順時(shí)針打印矩陣(詳解)

    輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。 示例 1: 示例 2: 劍指 Offer 29. 順時(shí)針打印矩陣 - 力扣(LeetCode) 與 力扣54題相同 54.?螺旋矩陣 二維數(shù)組順時(shí)針從外往里走 可以想象成:按照 右-》下-》左 -》上 的順序一直走,走過(guò)的地方不要走即可。

    2024年02月09日
    瀏覽(26)
  • 【LeetCode-中等】劍指 Offer 29. 順時(shí)針打印矩陣(詳解)

    【LeetCode-中等】劍指 Offer 29. 順時(shí)針打印矩陣(詳解)

    輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。 示例 1: 示例 2: 劍指 Offer 29. 順時(shí)針打印矩陣 - 力扣(LeetCode) 與 力扣54題相同 54.?螺旋矩陣 二維數(shù)組順時(shí)針從外往里走 可以想象成:按照 右-》下-》左 -》上 的順序一直走,走過(guò)的地方不要走即可。

    2024年02月13日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包