給乙個二維的矩陣,包含'x'
和'o'
, 找到所有被'x'
圍繞的區域,並用'x'
替換其中所有的'o'
。
盆地:邊界上的"o"
平原:"x"
注水點:邊界
如果是多源問題,則同時注水
public class solution
int n = board.length;
int m = board[0].length;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
for (int i = 0; i < n; i++)
else }}
}private void bfs(char board, int sx, int sy)
int dx = ;
int dy = ;
queueqx = new linkedlist<>();
queueqy = new linkedlist<>();
// 源點進隊
qx.offer(sx);
qy.offer(sy);
board[sx][sy] = 'w'; //water has been here
//拿出隊首元素
先建立模型,找到點和邊
node是所有狀態(eg 0001), 能從某個狀態(0001)變成另乙個狀態(0002),就連一條邊
即每個點最多有8種狀態
死鎖狀態:可以有點指向它,它不能出去任何一條邊
給乙個有向圖,起點是0000,終點是某值,問起點到終點的最短距離是多少。
從0000開始注水
點:每乙個布局 邊:如果乙個布局能夠變動成下乙個布局,則確定一條邊
如何記錄這個狀態:
直接用sting來記 [[2,8,3],[1,0,4],[7,6,5]] "283104765"
public class solution
setdeadset = new hashset<>();
for (string str : deadends)
if (deadset.contains(start))
queueq = new linkedlist<>();
setv = new hashset<>(); //已經走過的點
q.offer(start);
v.add(start);
int dist = 0; //第幾次