技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
可能會有讀者覺得4個方向都寫上去,很醜陋,代碼有冗餘。
我個人覺得,還好,感官上覺得這個更清晰,一看就知道是4個方向。
當然,你也可以的定義一個方向數組,類似{{0,1},{0,-1},{1,0},{-1,0}}這樣的。但是也是有瑕疵的,就是對每一個方向上的查找都要檢查行和列有沒有溢出,但是我們知道,其實不用都檢查,比如你向上(北)檢查,列是固定的,一定不會溢出,沒必要檢查。在python實現中,我們準備展示這種實現。
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
可能會有讀者覺得4個方向都寫上去,很醜陋,代碼有冗餘。
我個人覺得,還好,感官上覺得這個更清晰,一看就知道是4個方向。
當然,你也可以的定義一個方向數組,類似{{0,1},{0,-1},{1,0},{-1,0}}這樣的。但是也是有瑕疵的,就是對每一個方向上的查找都要檢查行和列有沒有溢出,但是我們知道,其實不用都檢查,比如你向上(北)檢查,列是固定的,一定不會溢出,沒必要檢查。在python實現中,我們準備展示這種實現。
Java語言實現:
Java 的實現和C語言的實現一致,不再撰述。
代碼如下:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
可能會有讀者覺得4個方向都寫上去,很醜陋,代碼有冗餘。
我個人覺得,還好,感官上覺得這個更清晰,一看就知道是4個方向。
當然,你也可以的定義一個方向數組,類似{{0,1},{0,-1},{1,0},{-1,0}}這樣的。但是也是有瑕疵的,就是對每一個方向上的查找都要檢查行和列有沒有溢出,但是我們知道,其實不用都檢查,比如你向上(北)檢查,列是固定的,一定不會溢出,沒必要檢查。在python實現中,我們準備展示這種實現。
Java語言實現:
Java 的實現和C語言的實現一致,不再撰述。
代碼如下:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
可能會有讀者覺得4個方向都寫上去,很醜陋,代碼有冗餘。
我個人覺得,還好,感官上覺得這個更清晰,一看就知道是4個方向。
當然,你也可以的定義一個方向數組,類似{{0,1},{0,-1},{1,0},{-1,0}}這樣的。但是也是有瑕疵的,就是對每一個方向上的查找都要檢查行和列有沒有溢出,但是我們知道,其實不用都檢查,比如你向上(北)檢查,列是固定的,一定不會溢出,沒必要檢查。在python實現中,我們準備展示這種實現。
Java語言實現:
Java 的實現和C語言的實現一致,不再撰述。
代碼如下:
Python語言實現:
Python 的實現和C語言思想一致,僅僅在查找方向上,為了縮短代碼量做了優化,詳細見C實現的說明。
代碼如下:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
可能會有讀者覺得4個方向都寫上去,很醜陋,代碼有冗餘。
我個人覺得,還好,感官上覺得這個更清晰,一看就知道是4個方向。
當然,你也可以的定義一個方向數組,類似{{0,1},{0,-1},{1,0},{-1,0}}這樣的。但是也是有瑕疵的,就是對每一個方向上的查找都要檢查行和列有沒有溢出,但是我們知道,其實不用都檢查,比如你向上(北)檢查,列是固定的,一定不會溢出,沒必要檢查。在python實現中,我們準備展示這種實現。
Java語言實現:
Java 的實現和C語言的實現一致,不再撰述。
代碼如下:
Python語言實現:
Python 的實現和C語言思想一致,僅僅在查找方向上,為了縮短代碼量做了優化,詳細見C實現的說明。
代碼如下:
技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後> 到中級難度,最後到hard難度全部完。目前我選擇C語言,Python和Java作為實現語言,因為這三種語言還是比較典型的。由於篇幅和> 精力有限,其他語言的實現有興趣的朋友請自己嘗試。初級難度說的差不多的時候,我打算再加點其他內容,我可能會從操作系統到協議棧,從分佈式> 聊到大數據框架,從大數據聊到人工智能,... ...。
如果有任何問題可以在文章後評論或者私信給我。
持續分享,敬請關注。
LeetCode 999. 車能捕獲棋子的最大數(Available Captures for Rook)
問題描述:
在一個8 x 8的棋盤board中,有一個白色的車,若干空白區域,若干白色的象,若干黑色的卒,它們分別用字符'R','.','B'和'p'表示。大寫字母表示白色棋子,小寫字母表示黑色棋子。
車的移動遵循國際象棋的規則:
- 選擇4個方向(東南西北)中的任意一個,然後朝那個方向移動,一直到它選擇停止或者到達棋盤的邊界又或者捕獲了不同顏色的卒;
- 如果車移動的過程碰到了相同顏色的象,它只能停止,不能跳過去;
請返回該車能捕獲的卒的最大數。
注:
- board.length == board[i].length == 8;
- board[i][j] 只能是 'R', '.', 'B', 或 'p'其中的一個;
- board[i][j] == 'R' 一定是存在的;
示例:
C語言實現:
沒有發現什麼特別好的方法,只能是先遍歷board找到車的位置。
找到位置後分別從東西南北四個方向查找是否有對方的卒存在。
對於每個方向上的查找存在如下情況:
- 什麼都沒找到,直接到達了邊界;
- 先找到了己方的象,這時候應該直接停止,結束這個方向上的查找;
- 先找到了對方的卒,結果應該加1;
等到四個方向都找遍了以後,直接結束遍歷,返回結果即可。
詳細代碼如下:
可能會有讀者覺得4個方向都寫上去,很醜陋,代碼有冗餘。
我個人覺得,還好,感官上覺得這個更清晰,一看就知道是4個方向。
當然,你也可以的定義一個方向數組,類似{{0,1},{0,-1},{1,0},{-1,0}}這樣的。但是也是有瑕疵的,就是對每一個方向上的查找都要檢查行和列有沒有溢出,但是我們知道,其實不用都檢查,比如你向上(北)檢查,列是固定的,一定不會溢出,沒必要檢查。在python實現中,我們準備展示這種實現。
Java語言實現:
Java 的實現和C語言的實現一致,不再撰述。
代碼如下:
Python語言實現:
Python 的實現和C語言思想一致,僅僅在查找方向上,為了縮短代碼量做了優化,詳細見C實現的說明。
代碼如下:
謝謝大家一直以來的關注和支持!
我一直在努力的寫好每一篇文章,畫好每一份插圖。但是作為一個996從業人員,時間精力十分有限。所以針對評論部分,以後只回答粉絲的問題和私信。希望僅僅是路過的朋友能夠體諒,希望更多人關注《吾是我師》,謝謝!