最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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”,全部都是干貨。


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

分享到微博請遵守國家法律
清镇市| 枣阳市| 湖南省| 毕节市| 元阳县| 湖北省| 玛多县| 清涧县| 宜城市| 嵩明县| 鄄城县| 蕉岭县| 广汉市| 盱眙县| 东丽区| 石门县| 阳西县| 恩平市| 获嘉县| 上犹县| 广河县| 莱州市| 桓仁| 漳浦县| 南木林县| 新密市| 泰州市| 富宁县| 依兰县| 夹江县| 长丰县| 萨迦县| 张家港市| 鄂伦春自治旗| 东乡县| 思茅市| 卓尼县| 犍为县| 平度市| 安阳县| 石柱|