leetcode:Pascal's Triangle II
2014-12-09 17:34
309 查看
vector<int> getRow(int rowIndex) { int *arr = new int[rowIndex+2]; int *arr1 = new int[rowIndex+2]; std::vector<int> v; if (rowIndex == 0) { v.push_back(1); return v; } arr[1] = 1; arr[2] = 1; int *src, *des; for (int i = 2; i <= rowIndex; ++i) { if ((i & 1)==0){ src = arr; des = arr1; } else{ src = arr1; des = arr; } des[1] = 1; des[2] = src[2] + 1; //cout << des[2] << endl; for (int j = 3; j < i+1; ++j) { des[j] = src[j - 1] + src[j]; } des[i+1] = 1; } if (rowIndex & 1) src = arr; else src = arr1; for (int i = 1; i <= rowIndex+1; ++i) { v.push_back(src[i]); } delete[] arr; delete[] arr1; return v; }
最初的想法,通过两个一维数组迭代,因为当前行的值需要上一行的值,看完别人写的发现自己逗B了,其实可以发现,pascal三角形每行相比前行多一个数,那么可以通过一个数组来做,先将最后一个数右移一位,然后按公式算就行,代码如下
vector<int> getRow(int rowIndex) { std::vector<int> v; int i,j; int *a=new int[rowIndex+1]; for (i = 0; i <= rowIndex; ++i) { a[0]=1; a[i]=1; for (j=i-1;j>0;--j) { a[j]=a[j-1]+a[j]; } } for (i = 0; i <= rowIndex; ++i) { v.push_back(a[i]); } delete[] a; return v; }
相关文章推荐
- leetcode--Pascal's Triangle II
- leetcode:Pascal's Triangle II
- LeetCode 119 Pascal's Triangle II
- [Leetcode]Pascal's Triangle II
- LeetCode 33 Pascal's Triangle II
- 【LeetCode】Pascal's Triangle II 解题报告
- LeetCode 119: Pascal's Triangle II
- LeetCode 118, 119. Pascal's Triangle i, ii
- <LeetCode OJ> 118./119. Pascal's Triangle(I / II)
- [Leetcode] Pascal's Triangle II
- LeetCode 119. Pascal's Triangle II
- 119. Pascal's triangle II Leetcode Python
- 【一天一道LeetCode】#119. Pascal's Triangle II
- leetcode-118&119 Pascal's Triangle I & II
- LEETCODE--Pascal's Triangle II
- Leetcode 119. Pascal's Triangle II
- 【leetcode】119. Pascal's Triangle II
- LeetCode119. Pascal's Triangle II
- 【LeetCode】 119. Pascal's Triangle II
- [leetcode, python] Pascal's Triangle II 杨辉三角