• leetcode764 Largest Plus Sign


    思路:

    首先使用dp计算出在每个位置(i, j)上下左右最多有多少个连续的1,得到up[i][j], down[i][j], left[i][j], right[i][j]。然后计算这四个值中的最小值,所有最小值中的最大值就是答案。

    实现:

     1 class Solution 
     2 {
     3 public:
     4     int orderOfLargestPlusSign(int N, vector<vector<int>>& mines)
     5     {
     6         vector<vector<int>> left(N, vector<int>(N, 0)), right(N, vector<int>(N, 0));
     7         vector<vector<int>> up(N, vector<int>(N, 0)), down(N, vector<int>(N, 0));
     8         vector<vector<int>> a(N, vector<int>(N, 1));
     9         for (int i = 0; i < mines.size(); i++) 
    10             a[mines[i][0]][mines[i][1]] = 0;
    11         for (int i = 0; i < N; i++)
    12         {
    13             left[i][0] = (a[i][0] == 1 ? 1 : 0);
    14             right[i][N - 1] = (a[i][N - 1] == 1 ? 1 : 0);
    15             for (int j = 1; j < N; j++)
    16             {
    17                 left[i][j] = a[i][j] == 0 ? 0 : left[i][j - 1] + 1;
    18                 right[i][N - 1 - j] = a[i][N - 1 - j] == 0 ? 0 : right[i][N - j] + 1;
    19             }
    20         }
    21         for (int j = 0; j < N; j++)
    22         {
    23             up[0][j] = (a[0][j] == 1 ? 1 : 0);
    24             down[N - 1][j] = (a[N - 1][j] == 1 ? 1 : 0);
    25             for (int i = 1; i < N; i++)
    26             {
    27                 up[i][j] = a[i][j] == 0 ? 0 : up[i - 1][j] + 1;
    28                 down[N - 1 - i][j] = a[N - 1 - i][j] == 0 ? 0 : down[N - i][j] + 1;
    29             }
    30         }
    31         int maxn = 0;
    32         for (int i = 0; i < N; i++)
    33         {
    34             for (int j = 0; j < N; j++)
    35             {
    36                 int tmp = min(min(min(up[i][j], down[i][j]), left[i][j]), right[i][j]);
    37                 maxn = max(maxn, tmp);
    38             }
    39         }
    40         return maxn;
    41     }
    42 };
  • 相关阅读:
    python学习--函数
    python学习--变量
    python学习--运算符
    python学习--数据类型
    python学习--循环语句
    年轻不言失败
    《zero to one》读后感
    进程与线程
    JS----模块化
    js 一个等号"=" 二个等号"==" 三个等号"===" object.is()的区别
  • 原文地址:https://www.cnblogs.com/wangyiming/p/8658120.html
Copyright © 2020-2023  润新知