Pascal's Triangle II
Total Accepted: 60120 Total Submissions: 196457 Difficulty: Easy
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return [1,3,3,1]
.
1).判断rowIndex为0,为1时的临界条件。
2).在第i行中,第1到第i-1个数为第i-1行上两个想邻的数相加之和。
3).用vec来模拟第i-1行,ans来模拟第i行。每一次循环,都用ans赋值给vec。
4).使用std::move,这个C++11提供的移动函数,可以将左值转换成右移,省去拷贝资源的代价。
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> ans;
ans.push_back(1);
if(rowIndex==0){
return ans;
}
ans.push_back(1);
if(rowIndex==1){
return ans;
}
vector<int> vec;
for(int i=1;i<rowIndex;i++){
vec = std::move(ans);
ans.clear();
ans.push_back(1);
for(int j=0;j<i;j++){
ans.push_back(vec[j]+vec[j+1]);
}
ans.push_back(1);
}
return ans;
}
};