[leetcode] 221.Maximal Square - 程序园



[leetcode] 221.Maximal Square - 程序园

Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.

For example, given the following matrix:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

Return 4.

题意:
给定一个二维数组,包含0和1,返回最大的全是1的正方形的面积。
思路:
采用动态规划的思路完成。记录以数组中某个点作为正方形的右下角对应的正方形的边长。

  • 如果该点元素是0,那么以该点作为正方形的右下角对应的正方形的边长就为0。
  • 如果该点元素是1,那么边长由什么决定呢?比如求edge[i][j]时,我们需要依赖的有edge[i-1][j],edge[i][j-1],edge[i-1][j-1]。这三个点是与[i][j]位置相近的三个点,只有这三个点都不是0,才可以构成边长超过1的正方形。因为边长为2以上的正方形最少包括除[i][j]之外的[i-1][j], [i][j-1],[i-1][j-1]这三个点。那么我们考虑以这三个点作为右下角的正方形的边长。我们知道以[i][j]这个点作为正方形,最多可以往左边延伸的长度是edge[i][j-1],edge[i-1][j-1]的较小者,同理往上最多延伸edge[i-1][j],edge[i-1][j-1]。那么也就是说应该取三者中的最小者,作为延伸的长度。以下图片,红色正方形代表的是以[i-1][j-1]为右下角的,两个蓝色的代表的是以[i-][j-1],[i-1][j]为右下角的,橙色的是当前的。
    这里写图片描述


Read full article from [leetcode] 221.Maximal Square - 程序园


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts