杨辉三角

    科技2024-12-17  8

    给定一个非负整数 numRows,生成杨辉三角的前 numRows 行 在杨辉三角中,每个数是它左上方和右上方的数的和。

    示例: 输入: 5 输出: [      [1],     [1,1],    [1,2,1],   [1,3,3,1],  [1,4,6,4,1] ]

    package com.loo;

    import java.util.List; import java.util.ArrayList;

    public class Triangle {     public static void main(String[] args) {         int num = 5;         List<List<Integer>> list = getTriangle2(num); // getTriangle(num);         for (int i=0;i<list.size();i++) {             for (int j=0;j<list.get(i).size();j++) {                 System.out.print(list.get(i).get(j));             }             System.out.println();         }     }

        // 递归     public static List<List<Integer>> getTriangle(int numRows) {         List<List<Integer>> triangle = new ArrayList();         if (numRows==0) {             return triangle;         }         if (numRows==1) {             triangle.add(new ArrayList());             triangle.get(0).add(1);             return triangle;         }         triangle = getTriangle(numRows - 1);         List<Integer> row = new ArrayList();         row.add(1);         for (int j=1;j<numRows-1;j++) {             row.add(triangle.get(numRows-2).get(j-1) + triangle.get(numRows-2).get(j));         }         row.add(1);         triangle.add(row);         return triangle;     }

        // 动态规划     public static List<List<Integer>> getTriangle2(int numRows) {         List<List<Integer>> triangle = new ArrayList();         if (numRows==0) {             return triangle;         }         triangle.add(new ArrayList());         triangle.get(0).add(1);         for (int i=2;i<=numRows;i++) {             List<Integer> row = new ArrayList();             List<Integer> prevRow = triangle.get(i-2);             row.add(1);             for (int j=1;j<i-1;j++) {                 row.add(prevRow.get(j-1) + prevRow.get(j));             }             row.add(1);             triangle.add(row);         }         return triangle;     } }

    Processed: 0.030, SQL: 8