LeetCode 118. Pascal's Triangle

本文介绍了一种用于生成帕斯卡三角形的高效算法,通过逐行填充的方式,利用上一行的数据来计算下一行的数值,最终生成指定层数的帕斯卡三角形。该算法在LeetCode平台上实现,提供了完整的Java代码示例。

分析

难度 易

来源

https://leetcode.com/problems/pascals-triangle/

题目

Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.

帕斯卡三角形

 In Pascal's triangle, each number is the sum of the two numbers directly above it.

Example:

Input: 5
Output:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

解答

 1 package LeetCode;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class L118_PascalTriangle {
 7     public List<List<Integer>> generate(int numRows) {
 8         if(numRows<0)
 9             return null;
10         List<List<Integer>> result=new ArrayList<List<Integer>>();
11         List<Integer> list=new ArrayList<Integer>();//记录当前层数值
12         for(int i=0;i<numRows;i++){
13             list.add(1);
14             for(int j=i-1;j>0;j--){//一行一行赋值,对每行从右向左赋值,避免修改下一个数字要用到两个加数
15                 list.set(j,list.get(j-1)+list.get(j));
16             }
17             result.add(new ArrayList<Integer>(list));
18         }
19         return result;
20     }
21     public static void main(String[] args){
22         L118_PascalTriangle l118=new L118_PascalTriangle();
23         System.out.println(l118.generate(5));
24     }
25 }

 

 

 

 

posted on 2018-11-01 09:25 flowingfog 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/flowingfog/p/9887397.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值