給出乙個二維整數網格 grid,網格中的每個值表示該位置處的網格塊的顏色。 只有當兩個網格塊的顏色相同,而且在四個方向中任意乙個方向上相鄰時,它們屬於同一連通分量。 連通分量的邊界是指連通分量中的所有與不在分量中的正方形相鄰(四個方向上)的所有正方形,或者在網格的邊界上(第一行/列或最後一行/列)的所有正方形。給出位於 (r0, c0) 的網格塊和顏色 color,使用指定顏色 color 為所給網格塊的連通分量的邊界進行著色,並返回最終的網格 grid 。解題思路:示例 1:
輸入:grid = [[1,1],[1,2]], r0 = 0, c0 = 0, color = 3
輸出:[[3, 3], [3, 2]]
示例 2:
輸入:grid = [[1,2,2],[2,3,2]], r0 = 0, c0 = 1, color = 3
輸出:[[1, 3, 3], [2, 3, 3]]
示例 3:
1 <= grid.length <= 50
1 <= grid[0].length <= 50
1 <= grid[i][j] <=1000
0 <= r0 < grid.length
0 <= c0 < grid[0].length
1 <= color <= 1000
從(r0,c0)開始,深度優先搜尋其聯通分量並標記。
通過標記來確定聯通分量的邊界,改變聯通分量的邊界。
class zb
} public int colorborder(int grid, int r0, int c0, int color)
}//下
int bomx = zb.x;
int bomy = zb.y+1;
if(isvalid(bomx,bomy,grid))
}//左
int leftx = zb.x-1;
int lefty = zb.y;
if(isvalid(leftx,lefty,grid))
}//右
int rightx = zb.x+1;
int righty = zb.y;
if(isvalid(rightx,righty,grid))}}
for(int i=0;i0&&i0&&j=0&&topx<=row)
if(topy>=0&&topy<=col)
return true;
return false;
}
後來想了想,其實可以在尋找聯通區域的過程中就確定邊界:如果該點上下左右的點都有效(都在grid中),且上下左右的點的顏色都與grid[r0][c0]初始的顏色相同,則不是邊界點。否則就是邊界點,是邊界點就改變其顏色為color。 力扣第165場周賽
a 和 b 在乙個 3 x 3 的網格上玩井字棋。井字棋遊戲的規則如下 玩家輪流將棋子放在空方格 上。第乙個玩家 a 總是用 x 作為棋子,而第二個玩家 b 總是用 o 作為棋子。x 和 o 只能放在空方格中,而不能放在已經被占用的方格上。只要有 3 個相同的 非空 棋子排成一條直線 行 列 對角線...
力扣第 202 場周賽
傳送門 5185 存在連續三個奇數的陣列 給你乙個整數陣列 arr,請你判斷陣列中是否存在連續三個元素都是奇數的情況 如果存在,請返回 true 否則,返回 false 示例 1 輸入 arr 2,6,4,1 輸出 false 解釋 不存在連續三個元素都是奇數的情況。示例 2 輸入 arr 1,2,...
力扣第 221 場周賽
class solution def halvesarealike self,s str bool score a e i o u a e i o u a s len s 2 b s len s 2 sa 0for ch in a if ch in score sa 1 sb 0for ch in ...