LeetCode 733. Flood Fill
An image is represented by a 2-D array of integers, each integer representing the pixel value of the image (from 0 to 65535).
Given a coordinate (sr, sc) representing the starting pixel (row and column) of the flood fill, and a pixel value newColor, “flood fill” the image.
To perform a “flood fill”, consider the starting pixel, plus any pixels connected 4-directionally to the starting pixel of the same color as the starting pixel, plus any pixels connected 4-directionally to those pixels (also with the same color as the starting pixel), and so on. Replace the color of all of the aforementioned pixels with the newColor.
At the end, return the modified image.
Example 1:
Input:
image = [[1,1,1],[1,1,0],[1,0,1]]
sr = 1, sc = 1, newColor = 2
Output: [[2,2,2],[2,2,0],[2,0,1]]
Explanation:
From the center of the image (with position (sr, sc) = (1, 1)), all pixels connected
by a path of the same color as the starting pixel are colored with the new color.
Note the bottom corner is not colored 2, because it is not 4-directionally connected
to the starting pixel.
Note:
The length of image and image[0] will be in the range [1, 50].
The given starting pixel will satisfy 0 <= sr < image.length and 0 <= sc < image[0].length.
The value of each color in image[i][j] and newColor will be an integer in [0, 65535].
給定一個位置的值,將與其相鄰的所有位置都變成和它相同的值.
最基本的深度搜尋,遞迴,只是這型別題做的比較少了
遞迴之後程式碼也是很簡潔了
public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
if(image[sr][sc] != newColor) {
floodFill(image, sr, sc, image[sr][sc], newColor);
}
return image;
}
public void floodFill(int[][] image, int sr, int sc, int oldcolor, int newColor) {
if(sr < 0 || sc <0 || sr >= image.length || sr >= image[0].length || image[sr][sc] != oldcolor) return;
image[sr][sc] = newColor;
floodFill(image, sr + 1, sc, oldcolor, newColor);
floodFill(image, sr - 1, sc, oldcolor, newColor);
floodFill(image, sr , sc+1, oldcolor, newColor);
floodFill(image, sr, sc - 1, oldcolor, newColor);
}
相關文章
- 和同事談談Flood Fill 演算法演算法
- 帶你學習Flood Fill演算法與最短路模型演算法模型
- canvas fill()Canvas
- PAT 1033 To Fill or Not to Fill (25分) 貪心思想
- 阻止SYN Flood攻擊
- Syn Flood攻擊的危害是什麼?Syn Flood攻擊如何應對?
- JavaScript 陣列 fill()JavaScript陣列
- JavaScript 陣列fill()JavaScript陣列
- fill和fill_n為區間所有元素賦值val賦值
- 什麼是Syn Flood攻擊?Syn Flood洪水攻擊應對方法是什麼?
- CSS text-fill-colorCSS
- SVG 動畫 fill 屬性SVG動畫
- WPF automatically generate shapes fill wrappanelAPP
- WPF Stretch None,Fill,Uniform,UnformToFillNoneORM
- CSS3 text-fill-colorCSSS3
- CSS3 animation-fill-modeCSSS3
- C# generate listview and fill data no xamlC#View
- 教你如何在Linux中防止SYN Flood攻擊Linux
- WPF customize ellipse fill with image/imagebrush and show text
- 工作筆記之一 array_fill_keys ()筆記
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- LINUX下SYN FLOOD攻擊及LINUX下SYN攻防簡述Linux
- php內建函式分析之array_fill_keys()PHP函式
- fill函式與memset函式的區別(c++)函式C++
- Array.prototype.fill 填充值被複用的問題
- CDPR收購開發《洪潮之焰》、《空穴》的工作室The Molasses Flood
- matlab 繪製置信範圍_fill(繪製其區間形成的區域)Matlab
- 【LeetCode】如何學習LeetCode?LeetCode
- Tensorflow的幾種變數生成格式。tf.zero,tf.fill,tf.random變數random
- leetcodeLeetCode
- 一個有趣的問題, 你知道SqlDataAdapter中的Fill是怎麼實現的嗎SQLLDAAPT
- LeetCode in actionLeetCode
- leetcode 238LeetCode
- LeetCode 164 最大間距 HERODING的LeetCode之路LeetCode
- LeetCode 143 重排連結串列 HERODING的LeetCode之路LeetCode
- LeetCode問題LeetCode
- 【LeetCode】Jewels and StonesLeetCode
- Leetcode 513 javascriptLeetCodeJavaScript