From 16af602fc8a69ac7f3ca8bda75f6077508cc395d Mon Sep 17 00:00:00 2001 From: wisdompeak Date: Wed, 6 Apr 2022 23:19:32 -0700 Subject: [PATCH] Create Readme.md --- .../Readme.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Math/2221.Find-Triangular-Sum-of-an-Array/Readme.md diff --git a/Math/2221.Find-Triangular-Sum-of-an-Array/Readme.md b/Math/2221.Find-Triangular-Sum-of-an-Array/Readme.md new file mode 100644 index 000000000..c5203a567 --- /dev/null +++ b/Math/2221.Find-Triangular-Sum-of-an-Array/Readme.md @@ -0,0 +1,31 @@ +### 2221.Find-Triangular-Sum-of-an-Array + +本题最直观的方法就是模拟,根据数据规模,N^2的时间复杂度是可以接受的。 + +本题其实还有另外一个切入的角度。从题目上看,三角形的构造方法与杨辉三角形非常相似,所以此题一定和二项式系数有关。 + +我们从下往上观察,最后两行是 +``` +1 1 + 1 +``` +这意味着此时最上面一行的每一个元素对于最终结果(即最底角的元素)的贡献是1:1. + +再观察最后三行 +``` +1 2 1 + 1 1 + 1 +``` +此时发现,最上面一行的每一个元素对于最终结果(即最底角的元素)的贡献恰好就是1:2:1. 究其原因,元素(1,1)会复制给(2,1),元素(1,2)会复制给(2,1)和(2,2)造成了双倍的贡献,而元素(1,3)又会只贡献给(2,2)。也就是说,我们只需要通过第二行,就可以推出第一行里每个元素对于底角元素的贡献值。 + +再观察最后四行 +``` +1 3 3 1 + 1 2 1 + 1 1 + 1 +``` +很明显了,最上面一行的每个元素对于底角元素的贡献值比例1:3:3:1,它就是(a+b)^3的二项式系数,即C(3,0),C(3,1),C(3,2),C(3,3)。 + +于是我们就可以得出结论,令n = nums.size()-1,那么原始数值里的nums[i],会复制C(n,i)份计入到递交元素中。我们只需要将nums按照n次二项式系数加权平均即可。