鱼C论坛

 找回密码
 立即注册
查看: 1219|回复: 0

[技术交流] C++刷leetcode(面试题 17.23. 最大黑方阵)【动态规划】

[复制链接]
发表于 2020-4-25 13:27:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
do题目描述:
  1. 给定一个方阵,其中每个单元(像素)非黑即白。设计一个算法,找出 4 条边皆为黑色像素的最大子方阵。

  2. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和列号,size 是子方阵的边长。若有多个满足条件的子方阵,返回 r 最小的,若 r 相同,返回 c 最小的子方阵。若无满足条件的子方阵,返回空数组。

  3. 示例 1:

  4. 输入:
  5. [
  6.    [1,0,1],
  7.    [0,0,1],
  8.    [0,0,1]
  9. ]
  10. 输出: [1,0,2]
  11. 解释: 输入中 0 代表黑色,1 代表白色,标粗的元素即为满足条件的最大子方阵
  12. 示例 2:

  13. 输入:
  14. [
  15.    [0,1,1],
  16.    [1,0,1],
  17.    [1,1,0]
  18. ]
  19. 输出: [0,0,1]
  20. 提示:

  21. matrix.length == matrix[0].length <= 200

  22. 来源:力扣(LeetCode)
  23. 链接:https://leetcode-cn.com/problems/max-black-square-lcci
  24. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码


  1. vector<int> findSquare(vector<vector<int>>& matrix) {
  2.         vector<int> res(3,0);
  3.         //初始化
  4.         int len = matrix.size();
  5.         if(len == 0) return {};
  6.         else if(len == 1){
  7.             if(matrix[0][0] == 0) return {0,0,1};
  8.             else return {};
  9.         }
  10.         vector<vector<vector<int> > > temp (len, vector<vector<int> > (len, vector<int> (2, 0)));//0是向下, 1向右
  11.         for(int i = len -1; i >=0; i--){
  12.             for(int j = len-1; j >= 0; j--){
  13.                 if(matrix[i][j] == 1) temp[i][j][1] = temp[i][j][0] = 0;
  14.                 else{
  15.                    if(j+1 < len) temp[i][j][1] = temp[i][j+1][1] + 1;
  16.                    else temp[i][j][1] = 1;

  17.                    if(i+1 < len) temp[i][j][0] = temp[i+1][j][0] + 1;
  18.                    else temp[i][j][0] = 1;

  19.                    int len = min(temp[i][j][1], temp[i][j][0]);
  20.                
  21.                     while(len >= res[2]){//要答案r,c最小,所以带等号
  22.                         if(temp[i+len - 1][j][1] >=len && temp[i][j+len-1][0] >= len){
  23.                             res =  {i, j, len};
  24.                             break;
  25.                         }
  26.                         len--;
  27.                     }
  28.                 }
  29.                
  30.             }
  31.         }
  32.         return res;
  33.     }
复制代码



参考讲解:https://leetcode-cn.com/problems ... gui-hua-by-tmoonli/

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 01:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表