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,3,1].

Note:
Could you optimize your algorithm to use only O(k) extra space?

思路:从后向前增加

注意: int[] to ArrayList 无法从ArrayList.asList 来转换,该函数生成一个static List<T> ,T如果是类可以使用。

java代码:

  1. public List<Integer> getRow(int rowIndex) {
  2. List<Integer> res = new ArrayList<Integer>();
  3. int[] res_array = new int[rowIndex+1];
  4. if(rowIndex < 0) {
  5. return res;
  6. }
  7. res_array[0] = 1;
  8. for(int i=1;i<=rowIndex;i++) {
  9. res_array[i] = 1;
  10. res_array[0] = 1;
  11. for(int j=i-1;j>0;j--) {
  12. res_array[j] = res_array[j] + res_array[j-1];
  13. }
  14. }
  15. for(int ele : res_array) {
  16. res.add(ele);
  17. }
  18. return res;
  19. }

C++代码:

  1. vector<int> getRow(int rowIndex) {
  2. vector<int> fn(rowIndex+1);
  3. fn[0]=1;
  4. for(int i=1;i<=rowIndex;i++) {
  5. for(int j=i;j>=0;j--) {
  6. if(j==i) fn[j]=fn[j-1];
  7. else if(j==0) fn[j]=1;
  8. else fn[j]=fn[j]+fn[j-1];
  9. }
  10. }
  11. return fn;
  12. }
posted @ 2014-08-02 14:32  purejade  阅读(84)  评论(0)    收藏  举报