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
- 阻止SYN Flood攻擊
- JavaScript 陣列fill()JavaScript陣列
- JavaScript 陣列 fill()JavaScript陣列
- fill和fill_n為區間所有元素賦值val賦值
- CSS text-fill-colorCSS
- SVG 動畫 fill 屬性SVG動畫
- [CareerCup] 9.7 Paint Fill 填充AI
- 淺談原始套接字 SOCK_RAW 的內幕及其應用(port scan, packet sniffer, syn flood, icmp flood)
- fill-opacity 屬性
- SYN Flood攻擊的基本原理(轉)
- CSS3 animation-fill-modeCSSS3
- CSS3 text-fill-colorCSSS3
- casperjs中fill()方法的使用JS
- C# generate listview and fill data no xamlC#View
- WPF Stretch None,Fill,Uniform,UnformToFillNoneORM
- 教你如何在Linux中防止SYN Flood攻擊Linux
- 3 分鐘視訊講解 SYN Flood 攻擊原理
- SAN儲存交換機效能之fill word
- fill-opacity屬性用法詳解
- WPF automatically generate shapes fill wrappanelAPP
- 工作筆記之一 array_fill_keys ()筆記
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- WPF customize ellipse fill with image/imagebrush and show text
- Casperjs中fill提交表單遇到的問題JS
- LINUX下SYN FLOOD攻擊及LINUX下SYN攻防簡述Linux
- php內建函式分析之array_fill_keys()PHP函式
- Array.prototype.fill 填充值被複用的問題
- fill函式與memset函式的區別(c++)函式C++
- HTML5的畫布:Stroke(筆觸)和Fill(填充)HTML
- CDPR收購開發《洪潮之焰》、《空穴》的工作室The Molasses Flood
- [譯] CSS Grid 之列寬自適應:`auto-fill` vs `auto-fit`CSS
- matlab 繪製置信範圍_fill(繪製其區間形成的區域)Matlab
- Tensorflow的幾種變數生成格式。tf.zero,tf.fill,tf.random變數random
- 【LeetCode】如何學習LeetCode?LeetCode
- 一個有趣的問題, 你知道SqlDataAdapter中的Fill是怎麼實現的嗎SQLLDAAPT