• 302. Smallest Rectangle Enclosing Black Pixels My Submissions QuestionEditorial Solution


    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.

    For example, given the following image:

    [
      "0010",
      "0110",
      "0100"
    ]
    

    and x = 0y = 2, return 6.

     1 public class Solution {
     2     public int minArea(char[][] image, int x, int y) {
     3         int m = image.length;
     4         int n = image[0].length;
     5         
     6         int left = bsHor(image, 0, y, 0, m, true);
     7         int right = bsHor(image, y+1, n, 0, m, false);
     8         int top = bsVer(image, 0, x, left, right, true);
     9         int bottom = bsVer(image, x+1, m, left, right, false);
    10         
    11         return (bottom - top) * (right - left);
    12     }
    13     
    14     private int bsHor(char[][] image, int i, int j, int top, int bottom, boolean leftSide) {
    15         while (i != j) {
    16             int k = top; 
    17             int mid = (j - i) / 2 + i;
    18             while (k<bottom && image[k][mid] == '0') k++;
    19             if (k < bottom == leftSide) {
    20                 j = mid;
    21             } else {
    22                 i = mid + 1;
    23             }
    24         }
    25         return i;
    26     }
    27     
    28     private int bsVer(char[][] image, int i, int j, int left, int right, boolean upSide) {
    29         while (i != j) {
    30             int k = left; 
    31             int mid = (j - i) / 2 + i;
    32             while (k<right && image[mid][k] == '0') k++;
    33             if (k < right == upSide) {
    34                 j = mid;
    35             } else {
    36                 i = mid + 1;
    37             }
    38         }
    39         return i;
    40     }
    41 }
  • 相关阅读:
    装饰者模式和适配器模式
    java 中获得 资源文件方法
    在windows 上统计git 代码量
    Linux-静态库生成
    Redis-Redi事务注意事项
    Linux-使用 yum 升级 gcc 到 4.8
    Linux-配置虚拟IP
    PHP-PSR-[0-4]代码规范
    Linux-/etc/rc.local 或 service 中使用 sudo -u xxx cmd 执行失败(sorry, you must have a tty to run sudo)解决办法
    Linux-系统负载
  • 原文地址:https://www.cnblogs.com/joycelee/p/5340668.html
Copyright © 2020-2023  润新知