码迷,mamicode.com
首页 > 其他好文 > 详细

118. Pascal's Triangle

时间:2018-10-05 21:31:20      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:整数   triangle   for   循环   pascal   else   pre   public   技术分享   

一、题目

  1、审题

  技术分享图片

  2、分析

   输入一个整数 n, 返回杨辉三角的 n 行。

 

 二、解答

  1、思路: 

    方法一、

      利用一次循环,直接计算杨辉三角的一行。再利用一次循环用 List 存储杨辉三角的 n 行。

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> resultList = new ArrayList<List<Integer>>();
        
        if(numRows == 0)
            return resultList;
        else if(numRows == 1) {
            resultList.add(Arrays.asList(1));
            return resultList;
        }
        resultList.add(Arrays.asList(1));
        resultList.add(Arrays.asList(1, 1));

        int i = 2;
        while(i < numRows) {
            List<Integer> targetList = new ArrayList<>();
            List<Integer> tmpList = resultList.get(i-1);
            targetList.add(1);
            for (int j = 1; j < i; j++) 
                targetList.add(tmpList.get(j) + tmpList.get(j-1));
            targetList.add(1);
            resultList.add(targetList);
            i++;
        }
        return resultList;
    }

  

  方法二、

    直接在一个 List 中计算杨辉三角的每一行。

    public List<List<Integer>> generate2(int numRows) {
        
        List<List<Integer>> resultList = new ArrayList<List<Integer>>();
        List<Integer> row = new ArrayList<Integer>();
        for(int i = 0; i < numRows; i++) {
            
            row.add(0, 1);
            for(int j = 1; j < row.size() - 1; j++) 
                row.set(j, row.get(j) + row.get(j + 1));
            resultList.add(new ArrayList<>(row));
        }
        
        return resultList;
    }

 

118. Pascal's Triangle

标签:整数   triangle   for   循环   pascal   else   pre   public   技术分享   

原文地址:https://www.cnblogs.com/skillking/p/9745926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!