内容简介:Given a non-negative integer给定一个非负整数
118:Pascal's Triangle 杨辉三角
Given a non-negative integer numRows , generate the first numRows of Pascal's triangle.
给定一个非负整数 numRows, 生成杨辉三角的前 numRows 行。
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,每行第一个和最后一个都为1,假设其他位置的数x索引坐标是(m,n),则x就是数是它 索引正上方的数和索引正上方的左边的数 之和。即(m-1,n),(m-1,n-1)两数和。
java:
class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle = new ArrayList<List<Integer>>(); if(numRows == 0) return triangle; List<Integer> one = new ArrayList<Integer>(); one.add(1); triangle.add(one); if(numRows == 1) return triangle; for (int i=1;i<numRows;i++){ List<Integer> row = new ArrayList<Integer>(); row.add(1); for (int j=1;j<i;j++){ List<Integer> prev = triangle.get(i-1); row.add(prev.get(j-1)+prev.get(j)); } row.add(1); triangle.add(row); } return triangle; } }
python:
class Solution: def generate(self, numRows: int) -> List[List[int]]: if numRows==0:return [] triangle=[[1]] if numRows==1: return triangle for i in range(1,numRows): tmp=[1] for j in range(1,i): tmp.append(triangle[i-1][j-1]+triangle[i-1][j]) tmp.append(1) triangle.append(tmp) return triangle
总结:
很简单的一道题,可以复习一下 java 嵌套数组数据结构。另外 可以在内层循环加判断 if(i!=0) row.add(1);triangle.add(row);
在i不等于0时才加上1,这样可省略
List<Integer> one = new ArrayList<Integer>(); one.add(1); triangle.add(one); if(numRows == 1) return triangle;
代码段,但是这个 if(i!=0)
会在每次进入第一次循环后判断一次。本着减少资源消耗的原则,应当提到外面。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- C语言打印杨辉三角代码及解析
- LeetCode每日一题: 杨辉三角(No.118)
- LeetCode - 118 - 杨辉三角(pascals-triangle)
- LeetCode - 119 - 杨辉三角II(pascals-triangle-ii)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。