日常练习8——杨辉三角

/*
*给定一个非负数numRows,打印杨辉三角(使用泛型实现) 
*/

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

public class Solution {
    //法一:按照顺序一个一个数打印
    public List>generate0(int numRows){
        List>list;
        list = new ArrayList<>();
        for(int i = 0;i < numRows;i++){
            Listnums = new ArrayList<>();
            nums.add(1);
            for(int j = 0;j <= i-2;j++){
                ListpreNums = list.get(i-1);
                int p = preNums.get(j);
                int q = preNums.get(j+1);
                int n = p+q;
                nums.add(n);
            }
            if(i!=0){
                nums.add(1);
            }
            list.add(nums);
        }
        return list;
    }

    //法二:先将1打印出来,再按照规律打印其他的
    public List>generate1(int numRows) {
        List> list = new ArrayList<>(numRows); //每一个顺序表的元素类型都是另一个顺序表(线性表)的引用
        for (int i = 0; i < numRows; i++) {
            list.add(new ArrayList<>(i + 1));
        }
        list.get(0).add(1);
        list.get(1).add(1);
        list.get(1).add(1);
        for (int i = 2; i < numRows; i++) {
            List nums = list.get(i);
            nums.add(1);
            for (int j = 1; j < i; j++) {
                int num = list.get(i - 1).get(j - 1) + list.get(i - 1).get(j);
                nums.add(num);
            }
            nums.add(1);
        }
        return list;
    }

     //法三:先都填进去1,再进行修改相应的位置的数
    private List>generate2(int numRows){
            List>list=new ArrayList<>(numRows);
        for(int i = 0;i(i+1));
            for(int j = 0;j <= i;j++){
                list.get(i).add(1);
               if (i > 1 && j>0 && j middle = list.get(i);
                   int num = list.get(i-1).get(j-1) + list.get(i - 1).get(j);
                   middle.set(j,num);
               }
            }
        }
        return list;
    }

    private static void printPascalsTriangle(Solution s,int n){
       System.out.println(s.generate0(n));
       System.out.println(s.generate1(n));
       System.out.println(s.generate2(n));
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        printPascalsTriangle(solution,6);
    }
}

 

结果:

 

你可能感兴趣的:(日常练习8——杨辉三角)