美文网首页
221. Maximal Square

221. Maximal Square

作者: 阿团相信梦想都能实现 | 来源:发表于2016-09-20 03:47 被阅读0次
    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
    

    相关文章

      网友评论

          本文标题:221. Maximal Square

          本文链接:https://www.haomeiwen.com/subject/zconettx.html