云南网站营销,江宁区建设工程质量监督站网站,邯郸教育行业网站建设,电脑培训题目如下#xff08;题目链接戳我#xff09;#xff1a;给定一个非负整数 numRows#xff0c;生成杨辉三角的前 numRows 行。
备注#xff1a;在杨辉三角中#xff0c;每个数是它左上方和右上方的数的和。示例#xff1a;
输入: 5
输出:
[[1],[1,1],[1,2,1],[1,3,3,1],…题目如下题目链接戳我给定一个非负整数 numRows生成杨辉三角的前 numRows 行。
备注在杨辉三角中每个数是它左上方和右上方的数的和。示例
输入: 5
输出:
[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]
]也给出了杨辉三角的示例图以下是我的解题思路我首先整理了前 5 行杨辉三角的数据11 11 2 11 3 3 1
1 4 6 4 1根据题目的返回值要求 List List Integer 我在中括号和字母之间故意加了空格我把每一行看作一个集合每个元素对应一个下标索引我把索引也整理了一下00 10 1 20 1 2 3
0 1 2 3 4然后得出了以下几条规律和方法第一个元素为1这个其实不算规律就是事实只是为了一会写代码时方便写限制每一行数据集合 List Integer 的第一个元素为 1也是事实增加一个集合用于记录上一行的数值每个元素等于上一个集合同索引的数值和前一个索引的数值的和这也是个事实不过要加个限制见下条每行集合中最后一个元素索引为index只等于上一行集合中索引为 index-1 的值思路整理完了剩下写代码就很简单了。public ListListInteger generate(int numRows) {ListListInteger list new ArrayList();ListInteger item;//当前行的集合ListInteger last null; //上一行的集合int index 1; //行号每行元素个数和行号一致while (index numRows) {item new ArrayList();//循环index次向item中添加元素a:for (int i 0; i index; i) {if(last null){item.add(1);break a;}else if(i 0){item.add(1);}else if(i index - 1){item.add(last.get(i - 1));}else{item.add(last.get(i - 1) last.get(i));}}last item;list.add(item);index;}return list;}提交结果执行用时 : 1 ms, 在Pascals Triangle的Java提交中击败了97.86% 的用户
内存消耗 : 33.6 MB, 在Pascals Triangle的Java提交中击败了39.51% 的用户