221. Maximal Square

class Solution(object):
    def maximalSquare(self, matrix):
        """
        :type matrix: List[List[str]]
        :rtype: int
        """
        rows, max_size = len(matrix), 0
        '''
        size[i]: the current number of continuous '1's in a column of matrix. Reset when discontinued.
        The idea is to do a by-row scan, updating size[i]
        Then check if there are continuous elements in size whose value is bigger than current maximal size.
        '''
        if rows > 0:
            cols = len(matrix[0])
            size = [0] * cols
            for x in xrange(rows):
                # update size
                count, size = 0, map(lambda x, y: x+1 if y == '1' else 0, size, matrix[x])
                
                for y in xrange(cols):
                    # find the maximum number of continuous elements bigger than max_size 
                    if size[y] > max_size:
                        count += 1
                        #if more than current max_size value, increase max_size by one 
                        if count > max_size:
                            # increase maximal size by 1
                            max_size += 1
                            break
                    else:
                        count = 0
                print max_size
        return max_size*max_size
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容