leetcode79. 單詞搜索 網格地圖搜索+回溯經典寫法啦

給定一個二維網格和一個單詞,找出該單詞是否存在于網格中。

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

示例:

board =
[
? ['A','B','C','E'],
? ['S','F','C','S'],
? ['A','D','E','E']
]

給定 word = "ABCCED", 返回 true.
給定 word = "SEE", 返回 true.
給定 word = "ABCB", 返回 false.

思路:搜索回溯基本上是經典模板題了。

class Solution {private boolean[][] marked;//        x-1,y// x,y-1  x,y    x,y+1//        x+1,yprivate int[][] direction = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}};// 盤面上有多少行private int m;// 盤面上有多少列private int n;private String word;private char[][] board;public boolean exist(char[][] board, String word) {m = board.length;if (m == 0)return false;n = board[0].length;marked = new boolean[m][n];this.word = word;this.board = board;for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)if (dfs(i, j, 0))return true;return false;}private boolean dfs(int i, int j, int start) {if (start == word.length() - 1) {return board[i][j] == word.charAt(start);}if (board[i][j] == word.charAt(start)) {marked[i][j] = true;for (int k = 0; k < 4; k++) {int newX = i + direction[k][0];int newY = j + direction[k][1];if (newX >= 0 && newX < m && newY >= 0 && newY < n && !marked[newX][newY]) {if (dfs(newX, newY, start + 1)) {return true;}}}marked[i][j] = false;}return false;}
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444168.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode1075. 項目員工 I(SQL)

項目表 Project&#xff1a; ---------------------- | Column Name | Type | ---------------------- | project_id | int | | employee_id | int | ---------------------- 主鍵為 (project_id, employee_id)。 employee_id 是員工表 Employee 表的外鍵。 員工…

leetcode1082. 銷售分析 I (SQL)

產品表&#xff1a;Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是這個表的主鍵. 銷售表&#xff1a;Sale…

Oracle 獲取當前日期及日期格式

Oracle 獲取當前日期及日期格式 <wbr><wbr> 獲取系統日期&#xff1a;<wbr><wbr><span style"padding:0px; margin:0px; color:rgb(255,0,0)">SYSDATE()<br style"padding-bottom:0px; padding-top:0px; padding-left:0px; ma…

leetcode1083. 銷售分析 II(SQL)

Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是這張表的主鍵 Table: Sales --------------------…

leetcode1084. 銷售分析III(SQL)

Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是這個表的主鍵 Table: Sales --------------------…

炸窩(Java)拼接

數組中插入相關練習 例題&#xff1a;定義一個方法 &#xff0c;將數組{1,2,3}按照指定的格式進行拼接成一個字符串 /*例題&#xff1a;定義一個方法 &#xff0c;將數組{1,2,3}按照指定的格式進行拼接成一個字符串&#xff0c; 格式定義如下[word1#word2#word3]. 思路分析&a…

leetcode71. 簡化路徑 Unix 風格

以 Unix 風格給出一個文件的絕對路徑&#xff0c;你需要簡化它。或者換句話說&#xff0c;將其轉換為規范路徑。 在 Unix 風格的文件系統中&#xff0c;一個點&#xff08;.&#xff09;表示當前目錄本身&#xff1b;此外&#xff0c;兩個點 &#xff08;..&#xff09; 表示將…

李牛(Linux)腳本

Linux課堂筆記day01 主要總結內容&#xff1a; 一&#xff1a;Linux背景介紹 二&#xff1a;系統操作 三&#xff1a;服務管理 四&#xff1a;shell腳本 五&#xff1a;文本操作 六:常用服務搭建 01&#xff1a;初識linux 收獲&#xff1a;可以熟練應對運維和開發 對以后的生…

leetcode601. 體育館的人流量(SQL)

X 市建了一個新的體育館&#xff0c;每日人流量信息被記錄在這三列信息中&#xff1a;序號 (id)、日期 (visit_date)、 人流量 (people)。 請編寫一個查詢語句&#xff0c;找出人流量的高峰期。高峰期時&#xff0c;至少連續三行記錄中的人流量不少于100。 例如&#xff0c;表…

李牛(Linux)打包

15&#xff1a;打包壓縮以及解壓縮 接下來我們來介紹打包壓縮以及解壓縮命令 首先我們要在腦海里想幾個問題&#xff1a; 1.打包壓縮以及解壓縮在字面上理解到底是什么意思&#xff1f; 是不是像我們生活見到的事例那樣 比如說&#xff1a;生產酒的廠商一般都是按照規則將12瓶…

notepad++ 文本文件內容丟失恢復

今天用著notepad不知道怎的&#xff0c;突然就崩潰了&#xff0c;然后我下次打開的時候彈了個框&#xff0c;我按了OK之后&#xff0c;里面所有的內容都不見了 網上百度了半天&#xff0c;總結如下&#xff1a; 在如下目錄下有notepad會自動保存的文件 C:\Users\Administrato…

jquery實現頁面提示,數據正在加載中。(

簡單代碼&#xff1a; jsp中代碼如下&#xff1a;<wbr> <div id"dataLoad" style"display:none"><!--頁面載入顯示--></wbr><wbr><wbr><table width100% height100% border0 aligncenter valignmiddle></wbr…

李牛(Linux)vi

16&#xff1a;強大的vi 引言&#xff1a;提到vi我們不得不提到vim 這兩種編輯器就先當于我們Windows操作系統當中的記事本 不過vi以及vim編輯器熟練掌握之后是不需使用鼠標進行操作的 完全都是由鍵盤來進行控制 那為什么可以不用鼠標呢 就是因為我們的vi編輯器是基于多模式的…

(多線程)leetcode1114. 按序打印 認識AtomicInteger

我們提供了一個類&#xff1a; public class Foo { public void one() { print("one"); } public void two() { print("two"); } public void three() { print("three"); } } 三個不同的線程將會共用一個 Foo 實例。 線程 A 將會調用 on…

李牛(Linux)

20&#xff1a;用戶和用戶組管理 引言&#xff1a; 新思維1&#xff1a;用戶&#xff1f;用戶是什么&#xff1f;能不能吃&#xff1f;好吃不&#xff01;哈哈 不開玩笑了 我們平常接觸的用戶就是window系統下的用戶 用戶名叫啥來著 哦 user 但是對于Windows操作系統來說 好像…

(多線程)leetcode1115. 交替打印FooBar 記得Thread.yield();

我們提供一個類&#xff1a; class FooBar { public void foo() { for (int i 0; i < n; i) { print("foo"); } } public void bar() { for (int i 0; i < n; i) { print("bar"); } } } 兩個不同的線程將會共用…

Date類(日期時間類)219

219節課堂筆記 1.概述&#xff1a;表示特定的時間 2.所在的類&#xff1a;java.util.Date(表示時間和日期的類) 類date標識特定的瞬間&#xff0c;精確到毫秒 3.毫秒的換算&#xff1a;1秒1000毫秒 tips&#xff1a;不可以認為是1秒等于60毫秒&#xff0c;與時鐘換算是不一樣的…

(多線程)leetcode1116. 打印零與奇偶數

假設有這么一個類&#xff1a; class ZeroEvenOdd { public ZeroEvenOdd(int n) { ... } // 構造函數 public void zero(printNumber) { ... } // 僅打印出 0 public void even(printNumber) { ... } // 僅打印出 偶數 public void odd(printNumber) { ... } …

Date類的構造方法以及成員方法220

220&#xff1a;date類的構造方法以及成員方法 /** date類的構造方法以及成員方法date 2020年4月27日上午10:41:59 / import java.util.Date;//注意進行類包的調用 public class zixuejava { public static void main(String[] args) { // TODO Auto-generated method stub de…

(多線程)leetcode1117. H2O 生成 認識Java中的PV原語

現在有兩種線程&#xff0c;氫 oxygen 和氧 hydrogen&#xff0c;你的目標是組織這兩種線程來產生水分子。 存在一個屏障&#xff08;barrier&#xff09;使得每個線程必須等候直到一個完整水分子能夠被產生出來。 氫和氧線程會被分別給予 releaseHydrogen 和 releaseOxygen …