五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

算法:矩陣中的路徑

2022-06-14 10:10 作者:做架構(gòu)師不做框架師  | 我要投稿


給定一個 m x n 二維字符網(wǎng)格 board 和一個字符串都是單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。

單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內(nèi)的字母不允許被重復使用。

例如,在下面的 3×4 的矩陣中包含單詞 "ABCCED"(單詞中的字母已標出)。


示例

  • 輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"

  • 輸出:true

提示

  • 1 <= board.length <= 200

  • 1 <= board[i].length <= 200

  • board 和 word 僅由大小寫英文字母組成

解題思路

本問題是典型的矩陣搜索問題,可使用 深度優(yōu)先搜索(DFS)+ 剪枝 解決。

  • 深度優(yōu)先搜索: 可以理解為暴力法遍歷矩陣中所有字符串的可能性。DFS 通過遞歸,先朝一個方向搜到底,再回溯至上個節(jié)點,沿另一個方向搜索,以此類推。


  • 剪枝: 在搜索中,遇到 這條路不可能和目標字符串匹配成功 的情況(例如:此矩陣元素和目標字符不同、此元素已被訪問),則應立即返回,稱之為 可行性剪枝 。

示例說明

  • 第一次操作:當前值為 A ,我們遍歷他的上下左右四個方向的單詞,發(fā)現(xiàn)右側(cè)是 B ,滿足條件;

  • 第二次操作:從 B 開始遍歷四個方向,發(fā)現(xiàn)他的右側(cè)是 C ,滿足條件;

  • 第三次操作:從 C 開始遍歷四個方向,發(fā)現(xiàn)他的下側(cè)是 C ,滿足條件;

  • 第四次操作:從 C 開始遍歷四個方向,發(fā)現(xiàn)他的下側(cè)是 E ,滿足條件;

  • 第五次操作:從 E 開始遍歷四個方向,發(fā)現(xiàn)他的左側(cè)是 D ,滿足條件;

  • 第六次操作:發(fā)現(xiàn) D 滿足數(shù)組的 len(word) - 1 ,即字符串完全匹配,退出。

代碼如下:

復雜度分析

  • M, N 分別為矩陣行列大小, K 為字符串 word 長度。

  • 時間復雜度: 最差情況下,需要遍歷矩陣中長度為 KK 字符串的所有方案,時間復雜度為 O(3的K次方);矩陣中共有 MN 個起點,時間復雜度為 O(MN) 。

  • 方案數(shù)計算: 設(shè)字符串長度為 K ,搜索中每個字符有上、下、左、右四個方向可以選擇,舍棄回頭(上個字符)的方向,剩下 3 種選擇,因此方案數(shù)的復雜度為 O(3的K次方)。

  • 空間復雜度: 搜索過程中的遞歸深度不超過 K ,因此系統(tǒng)因函數(shù)調(diào)用累計使用的??臻g占用 O(K)(因為函數(shù)返回后,系統(tǒng)調(diào)用的??臻g會釋放)。最壞情況下 K = MN,遞歸深度為 MN ,此時系統(tǒng)棧使用 O(MN) 的額外空間。

END

本文內(nèi)容出處是力扣官網(wǎng),希望和大家一起刷算法,在后面的路上不變禿但是變強!

好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。


算法:矩陣中的路徑的評論 (共 條)

分享到微博請遵守國家法律
宜都市| 哈尔滨市| 扎囊县| 罗甸县| 云浮市| 高密市| 凌海市| 泰来县| 勃利县| 湟中县| 吉安市| 通榆县| 曲阳县| 阿合奇县| 油尖旺区| 石屏县| 阳曲县| 崇信县| 大竹县| 鹿泉市| 宝丰县| 平顺县| 陇西县| 天等县| 磐安县| 新闻| 贵港市| 耒阳市| 江源县| 揭东县| 大厂| 吉林省| 遂平县| 治多县| 额济纳旗| 天水市| 繁峙县| 滁州市| 大冶市| 卓资县| 肥西县|