在乙個 8 x 8 的棋盤上,有乙個白色車(rook)。也可能有空方塊,白色的象(bishop)和黑色的卒(pawn)。它們分別以字元 「r」,「.」,「b」 和 「p」 給出。大寫字元表示白棋,小寫字元表示黑棋。
車按西洋棋中的規則移動:它選擇四個基本方向中的乙個(北,東,西和南),然後朝那個方向移動,直到它選擇停止、到達棋盤的邊緣或移動到同一方格來捕獲該方格上顏色相反的卒。另外,車不能與其他友方(白色)象進入同乙個方格。
返回車能夠在一次移動中捕獲到的卒的數量。
輸入:[[".",".",".",".",".",".",".","."],
[".",".",".",「p」,".",".",".","."],
[".",".",".",「r」,".",".",".",「p」],
[".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".","."],
[".",".",".",「p」,".",".",".","."],
[".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".","."]]
輸出:3
解釋:在本例中,車能夠捕獲所有的卒。
輸入:[[".",".",".",".",".",".",".","."],
[".",「p」,「p」,「p」,「p」,「p」,".","."],
[".",「p」,「p」,「b」,「p」,「p」,".","."],
[".",「p」,「b」,「r」,「b」,「p」,".","."],
[".",「p」,「p」,「b」,「p」,「p」,".","."],
[".",「p」,「p」,「p」,「p」,「p」,".","."],
[".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".","."]]
輸出:0
解釋:象阻止了車捕獲任何卒。
輸入:[[".",".",".",".",".",".",".","."],
[".",".",".",「p」,".",".",".","."],
[".",".",".",「p」,".",".",".","."],
[「p」,「p」,".",「r」,".",「p」,「b」,"."],
[".",".",".",".",".",".",".","."],
[".",".",".",「b」,".",".",".","."],
[".",".",".",「p」,".",".",".","."],
[".",".",".",".",".",".",".","."]]
輸出:3
解釋:車可以捕獲位置 b5,d6 和 f5 的卒。
題目描述的真的挺繞的,簡單說就是車可以向上下左右四個方向走,遇到象就不能再繼續走了,同一方向的車只能捕獲乙個。
簡單方法:首先找到車的位置,然後上下左右四個方向分別搜尋是否有車。對每個方向,若遇到象,則直接退回,一旦捕獲到了乙個車,也退回。
class
solution
(object)
: def numrookcaptures
(self, board)
:"""
:type board: list[list[str]
]:rtype:
int"""
# 找到車r的位置
break_flag = false # 記錄內層迴圈是否break
for i in range(0
,8):
for j in range(0
,8):
if board[i]
[j]==
'r':
m = i
n = j
break_flag = true
break
# 由於只有乙個r,若內層j迴圈break,則外層i也break
if break_flag:
break
count =
0
# 向右搜尋
i = n+
1while i<8:
if board[m]
[i]==
'b':
break
elif board[m]
[i]==
'p':
count +=
1break
i +=
1
# 向左搜尋
i = n-
1while i>0:
if board[m]
[i]==
'b':
break
elif board[m]
[i]==
'p':
count +=
1break
i -=
1
# 向上搜尋
i = m-
1while i>0:
if board[i]
[n]==
'b':
break
elif board[i]
[n]==
'p':
count +=
1break
i -=
1
# 向下搜尋
i = m+
1while i<8:
if board[i]
[n]==
'b':
break
elif board[i]
[n]==
'p':
count +=
1break
i +=
1return count
力扣刷題記錄 陣列 簡單 896單調數列
如果陣列是單調遞增或單調遞減的,那麼它是單調的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞增的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞減的。當給定的陣列 a 是單調陣列時返回 true,否則返回 false。class solution object def ...
力扣刷題記錄05
題目分類 二分查詢 時間 2020 09 09 題目一 兩數之和 兩數之和 ii 輸入有序陣列 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 ind...
力扣刷題記錄2
第一題是每日一題的簡單題。需要記的並不多,一是用迭代器對vector的一些基本操作。可以參考這裡 for vector iterator iter num.begin iter num.end iter 另外是快排的思想。這種思想實用性很廣,即使不需要排序,在找出最大的k個數,對陣列進行分割 以中間...