对于第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. liunx php-fpm

    查看php-fpm 相关信息 查看php-fpm是否开启 :ps -ef|grep php 查看php-fpm的位置:whereis php-fpm 查看php-fpm进程数:ps aux | gre ...

  2. C++标准库之String

    C++中支持的字符串处理的函数库叫String,但它不是STL,却与STL操作十分相似. 1.声明: 使用String之前要有以下头文件 #include<string> using na ...

  3. datetime和date如何转json

    import json from datetime import datetime, date class MyJson(json.JSONEncoder): def default(self, o) ...

  4. 2019.3.22 SQL语句(基础篇)

    SQL语句 创建一个数据库: create database+数据库名; 使用数据库: use+数据库名; 查看mySQL中有哪些数据库: show databases; 删除数据库 drop dat ...

  5. linux的运行模式

    一. 运行模式 运行模式也可以称为运行级别. 在Linux中存在一个进程:init(initialize,初始化),进程id是1 该进程存在一个对应的配置文件:inittab(系统运行级别配置文件,位 ...

  6. redis——基础知识

    redis默认端口:6379 一.为何要用redis? redis广义上来讲类似于mongodb,rabitmq,都属于nosql——即非关系型数据库中的一种,通常而言,mongodb不能说是mq(消 ...

  7. QWebView使用

      问题: 开始编译的时候在pro文件中要加上 QT += core gui webkitwidgets 文件使用部分加上 #include<QtWebKitWidgets/QWebView&g ...

  8. spring利用cors处理跨域问题

    参考 http://blog.csdn.net/isea533/article/details/50449907 写的很全面 http://blog.csdn.net/a317560315/artic ...

  9. java判断jsonObject和jsonArray是否为空

    resJsonObj = {"res":"0","msg":"","data":{"Nam ...

  10. 【坑】自动化测试之Excel表格

    参考一位大神的博客项目架构,把元素和数据都参数化,但是总是被excel表格坑 1.无法下拉 动作列通过下拉列表来控制,点击下拉列表无反应 解决方案:不知道是不是中间动了什么,因为Excel版本的问题, ...