本文共 1235 字,大约阅读时间需要 4 分钟。
题目大意:
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]
思路:
class Solution(object): def generate(self, numRows): """ :type numRows: int :rtype: List[List[int]] """ res=[] for i in range(numRows):#每循环一次出现一行 temp=[1]*(i+1)#初始化为1 res.append(temp) for j in range(1,i):#列 res[i][j]=res[i-1][j-1]+res[i-1][j] return res
以下是Java版本:
1. public static List
> generate(int numRows){ 2. List
> s = new ArrayList
>(); 3. if(numRows == 0) return s; 4. ArrayList a = new ArrayList (); 5. a.add(1); 6. s.add(a); //注意二维的赋值问题 不能直接添加1 7. for(int i = 1; i < numRows; i++){ 8. List t = new ArrayList (); 9. t.add(1); 10. for(int j = 1; j <= i - 1 ; j++){ 11. t.add(s.get(i - 1).get(j - 1) + s.get(i - 1).get(j)); 12. } 13. t.add(1); 14. s.add(t); 15. } 16. return s; 17. }
Test:
1. public static void main(String[] args){ 2. 3. System.out.println(generate(5)); 4. }
转载地址:http://bpuvi.baihongyu.com/