您的位置:首页 > 其它

leetcode 119. Pascal's Triangle II 杨辉三角形2

2017-09-14 13:22 447 查看
Given an index k, return the kth row of the Pascal’s triangle.

For example, given k = 3,

Return [1,3,3,1].

就是中国最伟大的杨辉三角形。

代码如下:

import java.util.ArrayList;
import java.util.List;

public class Solution
{
public List<Integer> getRow(int rowIndex)
{
List<List<Integer>> res=new ArrayList<>();
if(rowIndex==0)
{
List<Integer> one=new ArrayList<>();
one.add(1);
res.add(one);
return res.get(0);
}else
{
List<Integer> one=new ArrayList<>();
one.add(1);
one.add(0);
res.add(one);
for(int i=1;i<rowIndex+1;i++)
{
List<Integer> tt=res.get(i-1);
List<Integer> rr=new ArrayList<>();
rr.add(tt.get(0));
for(int j=1;j<tt.size();j++)
rr.add(tt.get(j) + tt.get(j-1));

rr.add(0);
res.add(rr);
}
for(int i=0;i<res.size();i++)
res.get(i).remove(res.get(i).size()-1);
return res.get(rowIndex);
}
}
}


下面是C++的做法,和上面的一道题一模一样,就是做一个迭代计算即可完成

代码如下:

#include <iostream>
#include <vector>

using namespace std;

class Solution
{
public:
vector<int> getRow(int rowIndex)
{
if (rowIndex == 0)
return vector<int>(1,1);
else
{
vector<vector<int>> res;
vector<int> one{ 1 ,0 };
res.push_back(one);
for (int i = 1; i < rowIndex+1; i++)
{
vector<int> one{ res[i - 1][0] };
for (int j = 1; j < res[i - 1].size(); j++)
one.push_back(res[i - 1][j] + res[i - 1][j - 1]);
one.push_back(0);
res.push_back(one);
}
for (int i = 0; i < res.size(); i++)
res[i].erase(res[i].end() - 1);
return res[rowIndex];
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: