zoukankan      html  css  js  c++  java
  • 764. Largest Plus Sign

    题目大意:

        就是一个由1和0组成的正方形矩阵,求里面最大的加号的大小,这个大小就是长度。

        

    什么鬼啊,本来想自己想的,结果看了半天没看懂具体什么意思,然后查了下题解,希望有人说一下意思,结果一上来就是思路,还直接动态规划四个大字,我也是呵呵了

    思路一:暴力Brute Force

        就是用i, j 循环每一个位置,判断该位置的上下左右的最长“1序列”,复杂度大概是n3

        ***这个据说过不了

    思路二:动态规划Dynamic Programming

        说实话看完源码才想到的,感觉挺好的,直接看源码大把,很好理解,反正大概就是正向扫一遍,连续的1递增,比如0111011就是0123012,然后反向再扫一遍就是,取最小值。0121011

        然后从上到下扫一遍,再从下到上扫一遍,同样取最小值

        

     1 class Solution {
     2 public:
     3     int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) {
     4         int map[505][505];
     5         memset(map,0,sizeof(map));
     6         for(int i=0;i<mines.size();i++)
     7         {
     8             map[mines[i][0]][mines[i][1]] = 1;
     9         }
    10         int dp[505][505];
    11         memset(dp,0,sizeof(dp));
    12         for(int i=0;i<N;i++) {
    13             int count = 0;
    14             for(int j=0;j<N;j++) {
    15                 count = map[i][j]==0?++count:0;
    16                 dp[i][j] = count;
    17             }
    18             
    19             count = 0;
    20             for(int j=N-1;j>=0;j--) {
    21                 count = map[i][j]==0?++count:0;
    22                 dp[i][j] = min(count, dp[i][j]);
    23             }
    24         }
    25 
    26         for(int i=0;i<N;i++) {
    27             int count = 0;
    28             for(int j=0;j<N;j++) {
    29                 count = map[j][i]==0?++count:0;
    30                 dp[j][i] = min(count, dp[i][j]);
    31             }
    32             
    33             count = 0;
    34             for(int j=N-1;j>=0;j--) {
    35                 count = map[j][i]==0?++count:0;
    36                 dp[j][i] = min(count, dp[i][j]);
    37             }
    38         }
    39         int ans = 0;
    40         for(int i=0;i<N;i++) {
    41             for(int j=0;j<N;j++) {
    42                 ans = max(ans, dp[i][j]);
    43             }
    44         }
    45     }
    46 };
    View Code

    思路三:二分

        这个我也没有试,和暴力有点像,连续的1最大是N个,那么就找N/2长度的试,如果找到了就更长的,反正这样我猜复杂度应该是n2logn ?

        有兴趣的试试吧

  • 相关阅读:
    SQLSERVER 对于非dbo的表增加注释
    关于Dos命令中存在中文的解决方法
    NHibernate 映射关系
    解决SVN图标不显示问题
    SqlServer使用表值函数汇总
    【编程练习】poj1068
    【编程练习】poj1111
    大数据处理的一些总结和应用(有关舆情监控)
    leetcode 37. Sudoku Solver 36. Valid Sudoku 数独问题
    Leetcode 4 Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/liwenchi/p/8306379.html
Copyright © 2011-2022 走看看