List解答LeetCode杨辉三角

简介: List解答LeetCode杨辉三角

首先要知道什么是杨辉三角

了解杨辉三角

点击了解:杨辉三角

题目要求:

给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

解答思路:

首先杨慧三角我们可以看成是一个二维数组的形式,所以我们要用一个List<List<Integer>>来接收这个返回值。从图看,第一行就一个1,我们可以创建一个List<Integer>来放第一行,并把它放到ret当中。后面就是从第二行开始了,我们观察到每一行的第一个数和最后一个数都是1,所以可以先把当前行的第一个和最后一个都设为1,然后看中间的计算部分。我们可以看到:当前行的当前列的数等于它前一行的前一列和前一行的当前列之和,所以首先我们要构造出当前行的前一行,就是用到了ret.get(i-1),要用一个List<Integer>preRow来接收 ,然后就是在第二列到倒数第二列中间进行计算,把preRow.get(j)+preRow.get(j-1)的值放到当前行的当前列。完成循环后利用ret.add(curRow)把当前行放入ret,最后返回ret即可。

1. class Solution {
2. public List<List<Integer>> generate(int numRows) {
3.         List<List<Integer>> ret=new ArrayList<>();//用来接收返回值
4.         List<Integer> list1=new ArrayList<>();//第一行
5.         list1.add(1);//第一行的1
6.         ret.add(list1);//把第一行放到ret中
7. //下面从第二行开始
8. for(int i=1;i<numRows;i++){
9. 
10. //当前行
11.             List<Integer>curRow=new ArrayList<>();
12.             curRow.add(1);//一行开始的1
13. 
14. 
15. //中间位置需要计算
16.         List<Integer>preRow=ret.get(i-1);//前一行的
17. 
18. 
19. //j代表列(从第二列到倒数第二列需要计算)
20. for(int j=1;j<i;j++){
21. 
22.             curRow.add(j,preRow.get(j)+preRow.get(j-1));
23.         }
24. 
25. 
26. //一行结束时候的1
27.             curRow.add(1);
28. //把这一行放进ret
29.             ret.add(curRow);
30.         }
31. 
32. return ret;
33.     }
34. }

图解(便于理解,自己画的,虽丑但有效哈哈哈哈)


相关文章
|
1月前
|
索引
leetcode-119:杨辉三角 II
leetcode-119:杨辉三角 II
39 0
|
17天前
|
缓存 算法 数据可视化
LeetCode 题目 119:杨辉三角 II
LeetCode 题目 119:杨辉三角 II
|
17天前
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
|
1月前
leetcode代码记录(杨辉三角
leetcode代码记录(杨辉三角
17 1
【每日一题】4.LeetCode——杨辉三角
【每日一题】4.LeetCode——杨辉三角
|
1月前
leetcode-118:杨辉三角
leetcode-118:杨辉三角
35 0
|
8月前
|
算法
【LeetCode】136. 只出现一次的数字、118. 杨辉三角
目录 136. 只出现一次的数字 118. 杨辉三角
29 0
|
9月前
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
43 0
|
10月前
|
算法
《LeetCode-数组篇一》之杨辉三角与重塑矩阵
《LeetCode-数组篇一》之杨辉三角与重塑矩阵
|
13天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题