一、数组---杨辉三角

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

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

思路

每行首尾都是1,可以先先初始化每行全是1,再计算修改

代码:

 1 class Solution {
 2 public:
 3     vector<vector<int>> generate(int numRows) {
 4         //先定义一个空数组,用来存放杨辉三角的每一行——小数组
 5         vector<vector<int>> res;
 6         //前两行是默认的数组
 7         if(numRows<=2){
 8             for(int i=0;i<numRows;i++){
 9                 vector<int> small(i+1,1);//第1行有1个1,第二行有2个1
10                 res.push_back(small);//将前两行存入到res空数组中
11             }
12             return res;//res包含了杨辉三角的前两行
13         }
14         else{
15             res = generate(numRows-1);//得到前numRows-1行的res数组
16             vector<int> newsmall(numRows,1);//初始化第numsRow行
17             //由第numRows-1行计算得到第numRows行,第numRows-1行在res数组中的索引为numRows-2
18             for(int j=0;j<res[numRows-2].size()-1;j++){
19                 newsmall[j+1] = res[numRows-2][j] + res[numRows-2][j+1];
20             }
21             res.push_back(newsmall);
22         }
23         return res;
24     }
25 };

原文地址:https://www.cnblogs.com/pacino12134/p/10991329.html

时间: 2024-11-08 23:23:49

一、数组---杨辉三角的相关文章

leetCode 118. Pascal&#39;s Triangle 数组 (杨辉三角)

118. Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [      [1],     [1,1],    [1,2,1],   [1,3,3,1],  [1,4,6,4,1] ] 题目大意: 输入行数,输出如上图所示的数组.(杨辉三角) 思路: 用双vector来处理当前行和下一行. 代码如下: cla

JavaSE7基础 二维数组 杨辉三角

版本参数:jdk-7u72-windows-i586注意事项:博文内容仅供参考,不可用于其他用途. 代码 import java.util.Scanner; class Demo{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); //n是矩阵有几行 int n=sc.nextInt(); int[][] myArr= new int[n][]; for(int i=1,j=0;j<n;i++

Java的二维数组的应用及杨辉三角的编写

(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个,即该位置上的元素在该行上最大,在该列上最小(注:一个二维数组也可能没有这样的鞍点). /** * * @author liuhui *@version Java上机实验三 *@time 2016.10.30 */ public class javatest2 { public static int

数组-02. 打印杨辉三角(20)

1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 int main(){ 5 int a[10][10]; 6 int i,j,n; 7 cin>>n; 8 for(i=0;i<n;++i){ 9 a[i][0]=1; 10 a[i][i]=1; 11 } 12 for(i=2;i<n;++i) 13 for(j=1;j<i;j++) 14 a[i][j]=a[i-1][

Makefile总结和反序字符数组,整体右移数组,杨辉三角!

2015.1.23今天我值日 继续接着昨天Makefile的目标开始记录:第一种:有 .PHNOY声明,但是冒号后面没有依赖文件.PHNOY:clean clean://没有依赖文件 rm *.0 temp 第二种:冒号前后的文件没有直接的依赖关系也可以没有依赖文件 .PHNOY:all 1 all: main.o f1.o f2.o f3.o 2 gcc -o all main.o f1.o f2.o f3.o 3 main.o: main.c 4 gcc -c main.c -o main.

用二维数组打印出杨辉三角

用二维数组打印出杨辉三角 首先你得知道二位数组和熟练二位数组,再次你得知道杨辉三角的规律! 相信能知道这个的,你已经掉了半只脚在这个坑了,不说废话直接上... 针对Javascript掌握基础的: 在电脑输入cmd命令打开控制器先要创建node'.js的环境: 你得把这个文件夹和你的js文件放在一起! js代码如下: 1 let readline = require("readline-sync"); 2 console.log("请输入杨辉三角的行数:"); 3

(LeetCode)Pascal&#39;s Triangle II --- 杨辉三角进阶(滚动数组思想)

Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra space? Subscribe to see which companies asked this question 解题分析: 此处有空间的限制,因此不能正

yanghui杨辉三角--(一维数组)探索1 2

探索1 #include <iostream>#define N 15using namespace std;int a[N]={1};void yanghui(int n){ int i,j; for(i=0;i<n;i++)    {   for(j=0;j<=i;j++) cout<<a[j]<<" ";                       cout<<"\n";       for(j=1;

yanghui杨辉三角--(二维数组

#include <iostream> #define N 15 using namespace std; int a[N][N]; void yanghui(int n) { int i,j; for(i=0;i<n;i++) a[i][0]=a[i][i]=1; for(i=2;i<n;i++) for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } int main() { int i,j,n; cin>>n; y