leetcode-pascal triangle I&&II
对于第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的更多相关文章
- leetcode—pascal triangle
1.题目描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows ...
- LeetCode:Pascal's Triangle I II
LeetCode:Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For examp ...
- LeetCode Single Number I / II / III
[1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...
- [array] leetcode - 40. Combination Sum II - Medium
leetcode - 40. Combination Sum II - Medium descrition Given a collection of candidate numbers (C) an ...
- LeetCode 137. Single Number II(只出现一次的数字 II)
LeetCode 137. Single Number II(只出现一次的数字 II)
- LeetCode:路径总和II【113】
LeetCode:路径总和II[113] 题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树, ...
- LeetCode:组合总数II【40】
LeetCode:组合总数II[40] 题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candi ...
- 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4
当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...
- [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, ...
随机推荐
- .NET 海量数据并发处理
.NET 海量数据并发处理 2013-02-19 10:27 提问者悬赏:10分 |XL码的小伙纸| 分类:C#/.NET| 浏览364次 百万级的数据并发处理,网站呈现数据..NET 开发,可能会使 ...
- Myeclipse经常弹出Subversion Native Library Not Available
- HDU - 5050 (大数二进制gcd)
It's time to fight the local despots and redistribute the land. There is a rectangular piece of land ...
- HDU - 1223 DP 分类
据说这个是经典问题 \(dp[i][j]=dp[i-1][j-1]*j+dp[i-1][j]*j\) \(dp[i][j]\)表示前i个数分为j个集合,[i-1][j-1]为插入小于号[i-1][j] ...
- vux构建的项目打包成app出的一些问题
1.static里面能放一些外部的插件,css可以放static,引用的时候按照相对路径写, less不可以,因为放在static里面的文件不会经过webpack的处理,所以也就不会编译成css,所以 ...
- 联想g400怎么进bios设置u盘启动图文教程
联想g400怎么进bios设置u盘启动图文教程 转自http://www.kqidong.com/bios/3940.html 虽然成功学会u盘装系统的人很多,但是设置u盘启动在小白们的眼中却没有那么 ...
- PIE SDK栅格图层渲染变化事件监听
1. 功能简介 通过PIE SDK加载图层后,会默认的赋值给数据一个渲染.当用户重新给数据赋值Render或改变数据显示效果时,会触发渲染变化事件. 所谓的事件监听是在事件触发时,将执行用户指定的函数 ...
- select 点击的时候获取 value值
<select onchange="selectUrl1(this.options[this.options.selectedIndex].value);"> ...
- Oracle 单实例数据库安装和real application clusters数据库安装的区别
在想了解Oracle单实例数据可和RAC数据库前,请确保你已经知道了数据库和实例的关系,如果不了解,请参考Oracle 数据库实例和数据库. 单实例数据库模式 单实例模式下,一个数据库只能通过一个实例 ...
- TOJ 1690 Cow Sorting (置换群)
Description Farmer John's N (1 ≤ N ≤ 10,000) cows are lined up to be milked in the evening. Each cow ...