博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode "Smallest Rectangle Enclosing Black Pixels"
阅读量:5141 次
发布时间:2019-06-13

本文共 1449 字,大约阅读时间需要 4 分钟。

Here is the thought flow: we are trying 'find' the boundary - it is a search, so binary search.

class Solution {  bool isRowHit(vector
>& image, int r) { int w = image[0].size(); for(int i = 0; i < w; i ++) if (image[r][i] == '1') return true; return false; } bool isColHit(vector
>& image, int c) { int h = image.size(); for(int i = 0; i < h; i ++) if (image[i][c] == '1') return true; return false; } int bSearchL2H(function
f, int a, int b) { int r = a; while(a<=b) { int mid = (a + b) / 2; if(f(mid)) { r = mid; a = mid + 1; } else { b = mid - 1; } } return r; } int bSearchH2L(function
f, int a, int b) { int r = a; while(a<=b) { int mid = (a + b) / 2; if(f(mid)) { r = mid; b = mid - 1; } else { a = mid + 1; } } return r; }public: int minArea(vector
>& image, int x, int y) { int h = image.size(); int w = image[0].size(); auto fr = std::bind(&Solution::isRowHit, this, image, std::placeholders::_1); auto fc = std::bind(&Solution::isColHit, this, image, std::placeholders::_1); int r1 = bSearchL2H(fr, x, h - 1); int r0 = bSearchH2L(fr, 0, x); int h1 = bSearchL2H(fc, y, w - 1); int h0 = bSearchH2L(fc, 0, y); return (h1 - h0 + 1) * (r1 - r0 + 1); }};
View Code

转载于:https://www.cnblogs.com/tonix/p/4963809.html

你可能感兴趣的文章
windows 7系统搭建本地SVN服务器的过程
查看>>
敏捷结果30天之第六天:周五回顾,找到三件做的好以及三件需要改善的事情...
查看>>
BZOJ3223 文艺平衡树
查看>>
Linux之vim详解
查看>>
【FFmpeg】Windows下FFmpeg调试
查看>>
PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别
查看>>
弹性布局
查看>>
好玩的Raft动画演示,原理秒懂
查看>>
Python—selenium模块(浏览器自动化工具)
查看>>
mysql笔记01
查看>>
Spring Boot
查看>>
ISO 纸张尺寸定义
查看>>
如何在Python 2.X中也达到类似nonlocal关键字的效果
查看>>
Google Maps API用法教程[转]
查看>>
jQuery 事件 keypress click mouseover blur load ......
查看>>
20. Valid Parentheses
查看>>
[转]使用String的intern方法节省内存
查看>>
深入浅出UML类图
查看>>
手动搭建 redis 集群
查看>>
php+xdebug远程调试(单人)
查看>>