典型的数学题
题目难点在于发现数学规律
仔细观察可以总结出来数学规律
设要求第I行第j列元素 那么这个元素应该等于第i-1行的第j列和j-1列的元素的和
基于以上条件即可循环、递归完成题目I
题目二让你直接返回第i行的所以元素
通常将直接按照I的思路胜场全部的三角形返回最后一行即可
但是题目要求O(n)空间
那么就要考虑对题目一进行优化
首先想到的是数学公式法寻找一个C(i,j)的通项公式 但是无奈数学基础不好 失败
然后想到既然只用O(n)空间 而第i行元素的值至于第i-1行的元素的值相关 那么就可以用O(n)的空间依次计算每一行的元素
由于计算第i行第j个元素的时候需要第i-1行的第j列和j-1列 而只用一个空间会抹掉上一行的数据 如果从空间头部开始计算新数据并更新的话会影响到下一个元素 导致原始必要数据的删除 所以我想到从空间的尾部更新新的数据 思路可行
此处应注意vector的初始化方法
vector<T> v1; | vector保存类型为T的对象。默认构造函数v1为空。 |
vector<T> v2(v1); | v2是v1的一个副本。 |
vector<T> v3(n, i); | v3包含n个值为i的元素。 |
vector<T> v4(n); | v4含有值初始化的元素的n个副本。 |