難度 簡單
這道題實(shí)現(xiàn)確實(shí)不難,但是要讀懂題需要花很長時(shí)間手素。一些無緊要的信息可以忽略,比如每個(gè)數(shù)字代表像素之類的筋量,這道題顏色值和像素值占用了同一個(gè)地方湖苞,寫入顏色就會(huì)擦掉像素拯欧,所以令人疑惑,所以忽略掉這部分信息是必要的财骨。大概題意就是給定數(shù)組中的一個(gè)位置镐作,從這個(gè)位置開始往這個(gè)位置的四周去遍歷,如果四周相鄰的數(shù)字和初始位置數(shù)字一樣隆箩,則寫成新的顏色该贾。使用迭代。
執(zhí)行用時(shí) :1 ms, 在所有 Java 提交中擊敗了95.24%的用戶
內(nèi)存消耗 :40.6 MB, 在所有 Java 提交中擊敗了60.00%的用戶
public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
fill(image, sr, sc, newColor, image[sr][sc]);
return image;
}
public void fill(int[][] image, int sr, int sc, int newColor, int num) {
if(sr < 0 || sc < 0 || sr > image.length-1 || sc > image[0].length-1 || image[sr][sc] == newColor || image[sr][sc] != num){
return;
}
if(image[sr][sc] == num){
image[sr][sc] = newColor;
fill(image, sr-1, sc, newColor, num);
fill(image, sr+1, sc, newColor, num);
fill(image, sr, sc-1, newColor, num);
fill(image, sr, sc+1, newColor, num);
}
}