[Leetcode] 733. Flood Fill 解题报告
2018-03-01 11:15
921 查看
题目:
An
value of the image (from 0 to 65535).
Given a coordinate
fill, and a pixel value
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:
Note:
The length of
be in the range
The given starting pixel will satisfy
The value of each color in
be an integer in
思路:
最最最原始的DFS题目^_^。
代码:
class Solution {
public:
vector<vecto
ade8
r<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
vector<vector<int>> new_image(image);
int oldColor = image[sr][sc];
if (oldColor != newColor) {
DFS(new_image, sr, sc, oldColor, newColor);
}
return new_image;
}
private:
void DFS(vector<vector<int>> &new_image, int r, int c, int old_color, int new_color) {
int row_num = new_image.size(), col_num = new_image[0].size();
if (r < 0 || r >= row_num || c < 0 || c >= col_num || new_image[r][c] != old_color) {
return;
}
new_image[r][c] = new_color;
DFS(new_image, r - 1, c, old_color, new_color);
DFS(new_image, r + 1, c, old_color, new_color);
DFS(new_image, r, c - 1, old_color, new_color);
DFS(new_image, r, c + 1, old_color, new_color);
}
};
An
imageis 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
imageand
image[0]will
be in the range
[1, 50].
The given starting pixel will satisfy
0 <= sr < image.lengthand
0 <= sc < image[0].length.
The value of each color in
image[i][j]and
newColorwill
be an integer in
[0, 65535].
思路:
最最最原始的DFS题目^_^。
代码:
class Solution {
public:
vector<vecto
ade8
r<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
vector<vector<int>> new_image(image);
int oldColor = image[sr][sc];
if (oldColor != newColor) {
DFS(new_image, sr, sc, oldColor, newColor);
}
return new_image;
}
private:
void DFS(vector<vector<int>> &new_image, int r, int c, int old_color, int new_color) {
int row_num = new_image.size(), col_num = new_image[0].size();
if (r < 0 || r >= row_num || c < 0 || c >= col_num || new_image[r][c] != old_color) {
return;
}
new_image[r][c] = new_color;
DFS(new_image, r - 1, c, old_color, new_color);
DFS(new_image, r + 1, c, old_color, new_color);
DFS(new_image, r, c - 1, old_color, new_color);
DFS(new_image, r, c + 1, old_color, new_color);
}
};
相关文章推荐
- 【LeetCode】733. Flood Fill 解题报告(Python)
- [Leetcode] 397. Integer Replacement 解题报告
- [leetcode] 53. Maximum Subarray 解题报告
- Leetcode 482. License Key Formatting 序列号格式 解题报告
- LeetCode: Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- [leetcode] 90. Subsets II 解题报告
- [Leetcode] 54. Spiral Matrix 解题报告
- [Leetcode] 769. Max Chunks To Make Sorted 解题报告
- [Leetcode] 659. Split Array into Consecutive Subsequences 解题报告
- leetCode解题报告5道题(八)
- LeetCode解题报告 120. Triangle [medium]
- leetcode:136. Single Number解题报告
- [leetcode] 341. Flatten Nested List Iterator 解题报告
- LeetCode 解题报告 Reorder List
- [leetcode] 20. Valid Parentheses 解题报告
- [Leetcode] 670. Maximum Swap 解题报告
- Leetcode 349. Intersection of Two Arrays 解题报告 Python Java
- LeetCode 318. Maximum Product of Word Length 解题报告
- [Leetcode] 2. Add Two Numbers 解题报告
- [leetcode] 96. Unique Binary Search Trees 解题报告