遇到一个好人,可以改变一生;遇到一本好书,又何尝不是呢?
最近在翻阅 左程云先生的《程序员代码面试指南–IT名企算法与数据结构题目最优解》时就非常的有感悟。建议有这方面爱好的博友,也去观摩观摩。
书中讲解的基于栈的数组的最大矩阵的算法很经典,但是博主能力有限,没能彻底的领悟该算法的精髓,但是根据这个思想,博主想出了一种简易的应对该类问题的算法,现概述如下。
核心思想
先来看一张图吧,我们就可以大致的理解了。
如图,每一个轮次都是一次运算,而我们的核心就是针对这每一个轮次的内部的运算。
计算出每一层连续不间断的最大长度
也就是说,我们是最这个数组进行由下至上的轮次计算,然后针对每一轮就可以计算出本轮次可以得出的连续最大子矩阵的面积。然后只需要比较每一个轮次的最大的那个数据,返回就可以求出该数组最大的连续的子矩阵的面积了。
代码
好了