对于第2个pascal triangle,通过观察可以发现,其实只需要2个额外的变量来记录,于是就设了个tmp数组。

整体有点DP问题中的滚动数组的感觉。

 #include <vector>
#include <iostream>
using namespace std; class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<vector<int>> res;
if (numRows == ) return res;
for (int i = ; i < numRows; i++)
{
vector<int> v; v.clear();
for (int j = ; j <= i; j++)
{
if (j == || j == i) v.push_back();
if (i> && j > && j < i)
{
v.push_back(res[i - ][j] + res[i - ][j - ]);
}
}
res.push_back(v);
}
return res;///////////忘了返回了,一直找不出错来。
}
vector<int> getRow(int rowIndex) {
vector<int> res(rowIndex+,);
vector<int> tmp(,);
//if (rowIndex == 0) return vector<int>(1,1);
for (int i = ; i <= rowIndex; i++)
{
tmp[] = ; tmp[] = ;//别放错位置。之前放到内层的for里了。
for (int j = ; j <= i; j++)
{
if (j == || j == i)
res[j] = ;
if (j> && j < i)
{
if (j % == )
tmp[] = res[j];
else if (j % == )
tmp[] = res[j];
res[j] += tmp[-j%];
}
}
}
return res;
}
}; void printVV(vector<vector<int>> vv)
{
for (int i = ; i < vv.size(); i++)
{
for (int j = ; j < vv[i].size(); j++)
{
cout << vv[i][j] << " ";
}
cout << endl;
}
}
int main()
{
Solution s;
//vector<vector<int>> vv = s.generate(3);
vector<int> v = s.getRow();
for (int i = ; i < v.size(); i++)
{
cout << v[i] << " ";
}
//printVV(vv);
return ;
}

leetcode-pascal triangle I&&II的更多相关文章

  1. leetcode—pascal triangle

    1.题目描述 Given numRows, generate the first numRows of Pascal's triangle.   For example, given numRows ...

  2. LeetCode:Pascal's Triangle I II

    LeetCode:Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For examp ...

  3. LeetCode Single Number I / II / III

    [1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...

  4. [array] leetcode - 40. Combination Sum II - Medium

    leetcode - 40. Combination Sum II - Medium descrition Given a collection of candidate numbers (C) an ...

  5. LeetCode 137. Single Number II(只出现一次的数字 II)

    LeetCode 137. Single Number II(只出现一次的数字 II)

  6. LeetCode:路径总和II【113】

    LeetCode:路径总和II[113] 题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树, ...

  7. LeetCode:组合总数II【40】

    LeetCode:组合总数II[40] 题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candi ...

  8. 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4

    当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...

  9. [LeetCode] Pascal's Triangle II 杨辉三角之二

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

随机推荐

  1. SQL数据库查询一列数据返回一行

    SQL:数据库合并列数据:遇到一个更新的问题 想要把查询到的数据某一列拼接成字符串形式返回用的是SQL数据库中的STUFF函数比如 查询到的表(u_College)如下Id Name Age Clas ...

  2. Tomcat(一)Tomcat常用配置

    操作系统:win8 Jdk版本:1.7.0_51 Jdk目录:C:\Program Files\Java\jdk1.7.0_51 Tomcat版本:8.0.3 Tomcat目录:D:\Program  ...

  3. vim(一) vim与markdown

    vim markdown 配置 vim高亮显示Markdown语法 在.vimrc添加 Plugin 'godlygeek/tabular' Plugin 'plasticboy/vim-markdo ...

  4. 使用Junit进行自动单元测试

    软件工程第二次作业 选择开发工具 使用Eclipse进行java程序编写:安装过程如图: 练习自动单元测试技术 参考资料:[Junit入门使用教程][https://www.cnblogs.com/y ...

  5. Maven系统学习

    1. 1.1 何为构建? 编译.测试.运行.打包.部署等工作: Maven就是用软件的办法让这一系列工作自动化,只需要一条简单的命令,所有繁琐的工作就会自动完成: Maven最大的消除了构建的重复,抽 ...

  6. shell的常用脚本一

    批量创建用户名脚本: ######################################################################### # File Name: cr ...

  7. flask综合整理2

    session功能 首先我们知道session可以理解是一把钥匙,它存在在服务器上,其实在flask中也有session 1.系统自带的session from flask import sessio ...

  8. 遍历方式 && 数组方法 && 算法

    遍历方式 一般,我们常用for in遍历对象,使用for (var i = 0; i < len; i++) {}的方式来遍历数组,这是最常用的两种方式,但是优缺点呢? 1.for (var i ...

  9. node+express搭建过程以及安装ejs模板引擎解决方案

    一.Node.js简介 1.Node.js是什么? Node.js 可以作为服务器向用户提供服务,与 PHP.Python.Ruby on Rails 相比,它跳过了 Apache.Nginx 等 H ...

  10. Python快速入门_1

    注释 # 用#号字符开头注释单行 """ 三个引号可以注释多行 三个引号可以注释多行 三个引号可以注释多行 """ 原始数据类型和运算符 ( ...