From d43c75ff2dc780a1812b2bd55886792510b93452 Mon Sep 17 00:00:00 2001 From: algorithmzuo Date: Mon, 29 Nov 2021 21:40:24 +0800 Subject: [PATCH] modify code --- .../Code05_CountSubmatricesWithAllOnes.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/class25/Code05_CountSubmatricesWithAllOnes.java b/src/class25/Code05_CountSubmatricesWithAllOnes.java index ab22814..f24d02e 100644 --- a/src/class25/Code05_CountSubmatricesWithAllOnes.java +++ b/src/class25/Code05_CountSubmatricesWithAllOnes.java @@ -19,6 +19,31 @@ public class Code05_CountSubmatricesWithAllOnes { } + // 比如 + // 1 + // 1 + // 1 1 + // 1 1 1 + // 1 1 1 + // 1 1 1 + // + // 2 .... 6 .... 9 + // 如上图,假设在6位置,1的高度为6 + // 在6位置的左边,离6位置最近、且小于高度6的位置是2,2位置的高度是3 + // 在6位置的右边,离6位置最近、且小于高度6的位置是9,9位置的高度是4 + // 此时我们求什么? + // 1) 求在3~8范围上,必须以高度6作为高的矩形,有几个? + // 2) 求在3~8范围上,必须以高度5作为高的矩形,有几个? + // 也就是说,<=4的高度,一律不求 + // 那么,1) 求必须以位置6的高度6作为高的矩形,有几个? + // 3..3 3..4 3..5 3..6 3..7 3..8 + // 4..4 4..5 4..6 4..7 4..8 + // 5..5 5..6 5..7 5..8 + // 6..6 6..7 6..8 + // 7..7 7..8 + // 8..8 + // 这么多!= 21 = (9 - 2 - 1) * (9 - 2) / 2 + // 这就是任何一个数字从栈里弹出的时候,计算矩形数量的方式 public static int countFromBottom(int[] height) { if (height == null || height.length == 0) { return 0;