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

劍指 Offer 12 矩陣中的路徑

這篇具有很好參考價(jià)值的文章主要介紹了劍指 Offer 12 矩陣中的路徑。希望對(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ù)使用。

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

劍指 Offer 12 矩陣中的路徑
示例 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ù)b站思路講解,加上力扣c++代碼

https://www.bilibili.com/video/BV1qK4y1E7ST/?spm_id_from=333.337.search-card.all.click&vd_source=cc3333a27046bad449a2b6818cc4149c
https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/solution/mian-shi-ti-12-ju-zhen-zhong-de-lu-jing-shen-du-yo/
該題目可以從二維數(shù)組的任意位置進(jìn)去開始找路徑,因此寫兩個(gè)for循環(huán)來(lái),如果有一個(gè)可以一直遞歸下去找到路徑,返回true
在dfs中,如果超出i或者j的邊界或者訪問(wèn)的當(dāng)前元素不等于word中當(dāng)前位置的元素,直接false
如果等于了,那么i和j都在范圍并且當(dāng)前元素也等于word當(dāng)前元素,并且k等于word大小減1的話,
說(shuō)明遍歷到最后一個(gè)word元素了,并且也相等,那么直接true。
如果還沒(méi)到最后一個(gè),那么將當(dāng)前board[i][j]的值保存到臨時(shí)變量tmp中,
并將board[i][j]修改為一個(gè)可以標(biāo)志該位置你已經(jīng)訪問(wèn)的值,防止在上下左右訪問(wèn)的時(shí)候,
又訪問(wèn)到該元素,保存到臨時(shí)變量tmp的目的是,為了等會(huì)回溯用。
緊接著,上下左右分別遍歷看有沒(méi)有和下一個(gè)word相等的,如果有不斷遞歸,直到長(zhǎng)度相等,
再后邊加回溯,由于剛剛訪問(wèn)到的時(shí)候,修改了該處的值,為了不讓重復(fù)訪問(wèn),但是該路徑?jīng)]有找到可行的路
因此,遞歸返回到上一層去了,需要將該值回溯以下。
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-489235.html


class Solution {
public:

	int m;//行
	int n;//列
	bool exist(vector<vector<char>>& board,string& word) {
		m = board.size();
		n = board[0].size();


		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				if (dfs(board, word, i, j, 0)) {
					return true;
				}
			}
		}
		return false;
	}
	bool dfs(vector<vector<char>>& board, string& word,int i,int j,int k) {
		if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] != word[k])return false;
		if (k == word.size() - 1)return true;
		int tmp = board[i][j];
		board[i][j] = '#';
		bool res = dfs(board, word, i + 1, j, k + 1) || dfs(board, word, i - 1, j, k + 1) ||
			dfs(board,word,i,j+1,k+1) || dfs(board,word,i,j-1,k+1);
		board[i][j] = tmp;
		return res;
	}
};

int main() {
	vector<vector<char>> board{{'A','B','C','E'},{'S','F','C','S'},{'A','D','E','E'}};
	Solution ss;
	string word = "ABCCED";
	cout << ss.exist(board,word) << endl;
	return 0;
}

到了這里,關(guān)于劍指 Offer 12 矩陣中的路徑的文章就介紹完了。如果您還想了解更多內(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每日一題】

    (搜索) 劍指 Offer 12. 矩陣中的路徑 ——【Leetcode每日一題】

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

    2024年02月12日
    瀏覽(28)
  • leetcode(力扣) 劍指 Offer 12. 矩陣中的路徑(回溯 DFS)

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

    給定一個(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. 矩陣中的路徑 (DFS + 回溯)

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

    給定一個(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日
    瀏覽(18)
  • 劍指offer(C++)-JZ12:矩陣中的路徑(算法-回溯)

    劍指offer(C++)-JZ12:矩陣中的路徑(算法-回溯)

    作者:翟天保Steven 版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處 題目描述: 請(qǐng)?jiān)O(shè)計(jì)一個(gè)函數(shù),用來(lái)判斷在一個(gè)n乘m的矩陣中是否存在一條包含某長(zhǎng)度為len的字符串所有字符的路徑。路徑可以從矩陣中的任意一個(gè)格子開始,每一步可以

    2024年02月11日
    瀏覽(23)
  • 劍指 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日
    瀏覽(29)
  • 劍指offer12 矩陣中的路徑 13 機(jī)器人的運(yùn)動(dòng)范圍 34.二叉樹中和為某一值得路徑

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

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

    2024年02月15日
    瀏覽(25)
  • 【劍指offer刷題記錄 java版】數(shù)組雙指針 之 其它題目

    【劍指offer刷題記錄 java版】數(shù)組雙指針 之 其它題目

    本系列文章記錄labuladong的算法小抄中劍指offer題目 題目鏈接:https://leetcode.cn/problems/XltzEq/ 題目鏈接:https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/ 題目鏈接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ 題目鏈接:https://leetcode.cn/problems/he-wei-sde-

    2024年02月11日
    瀏覽(22)
  • JZ12 矩陣中的路徑

    JZ12 矩陣中的路徑

    劍指Offer編程鏈接:JZ12 題目描述: 思路:遞歸+回溯的方法,總結(jié)一下什么情況需要使用遞歸: 遞歸在解決問(wèn)題時(shí),通常涉及以下情況: 問(wèn)題可被分解為較小的相似子問(wèn)題。 子問(wèn)題與原問(wèn)題具有相同的結(jié)構(gòu),只是規(guī)模更小。 每個(gè)子問(wèn)題的解可以通過(guò)遞歸調(diào)用來(lái)獲得。 存在

    2024年02月10日
    瀏覽(17)
  • 劍指 Offer 29. 順時(shí)針打印矩陣

    劍指 Offer 29. 順時(shí)針打印矩陣

    輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(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]] 輸出:[1,2,3,4,8,12,11,10,9,5,6,7] 限制: 0 = matrix.length = 100 0 = matrix[i].length = 100 思路:首先自己

    2024年02月15日
    瀏覽(29)
  • 劍指Offer-29-順時(shí)針打印矩陣

    劍指Offer-29-順時(shí)針打印矩陣

    劍指Offer-29題 題目描述:順時(shí)針打印矩陣 輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。 **題解思路:**使用 模擬 的方法 定義四個(gè)邊界變量表示當(dāng)前要遍歷的邊界:上(top)、下(bottom)、左(left)、右(right),條件結(jié)束的標(biāo)志是[上邊界=下邊界 且 左邊界=有邊

    2024年02月13日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包