码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode OJ:Pascal's Triangle II

时间:2015-05-04 13:28:57      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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?

思路:

因为每一层的数都是对称的,所以只需要计算每一层的前半部分的值,后半部拷贝就可以了。res[i] = res`[i - 1] + res`[i](res`代表原数组,res代表更新后的数组),tmp代表res`[i - 1],tmp2代表 res`[i]。

代码:

int* getRow(int rowIndex, int* returnSize) {
    if(rowIndex < 0) return NULL;
    ++rowIndex;
    int *res = (int*)malloc(sizeof(int) * rowIndex);
    res[0] = 1;
    int count = rowIndex;
    while(--count){
        int real_index = rowIndex - count + 1;
        int half = real_index / 2;
        if(real_index % 2 == 0){
            half--;
        }
        int tmp = res[0];
        int i = 1;
        for(; i <= half; i++){
            int tmp2 = res[i];
            res[i] = tmp + tmp2;
            tmp = tmp2;
        }
        if(real_index % 2){
            i -= 2;
        } else {
            --i;
        }
        for(int j = half + 1; j < real_index; j++){
            res[j] = res[i--];
        }
    }
    *returnSize = rowIndex;
    return res;
}

 

LeetCode OJ:Pascal's Triangle II

标签:

原文地址:http://www.cnblogs.com/csuer/p/4475901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!