Description:
An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. The black pixels are connected, i.e., there is only one black region. Pixels are connected horizontally and vertically. Given the location (x, y) of one of the black pixels, return the area of the smallest (axis-aligned) rectangle that encloses all black pixels.
问题描述:
图像中的黑色像素用1表示,白色像素用0表示,图像中所有的黑色像素是连通的,求最小的矩阵区域能够把图像中所有黑色像素连成一片。给了初始黑色像素点(X,Y)。
解法一:
思路:
题目想要我们做的事情是想象成两行,两列,往中间缩紧,直到含有一个黑的为止。。
即找到四个边界,以左边界为例说明,找到第一个有黑色像素的一列。。其余四个边界同理可得,找到最后一个有黑色像素的一列,找到第一个有黑色像素的一行,找到最后一个有黑色像素的一行。。
问题转换为找到第一个、最后一个、任意一个满足x条件的某个东西。。。所以用四个二分,并且写有黑色元素(或者全为白色元素的辅助函数)
Code:
代码中的if 比较啰嗦,为了便于读者理解,先不改了。。。
public class Solution {
/**
* @param image a binary matrix with '0' and '1'
* @param x, y the location of one of the black pixels
* @return an integer
*/
public int minArea(char[][] image, int x,