leetcode--119. 楊輝三角 II
阿新 • • 發佈:2021-02-07
題目連結
https://leetcode-cn.com/problems/pascals-triangle-ii/
一、題目
給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。
在楊輝三角中,每個數是它左上方和右上方的數的和。
示例:
輸入: 3
輸出: [1,3,3,1]
二、分析與程式碼
1.
程式碼如下(示例):
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* getRow(int rowIndex, int* returnSize){
rowIndex += 1;
*returnSize = rowIndex;
int** res = (int**)malloc(sizeof(int) * (1 + rowIndex) * rowIndex );
for (int i = 0; i < rowIndex; i++) {
res[i] = (int*)malloc(sizeof(int) * (i + 1));
}
for(int i = 0; i <rowIndex; i++){
res[i] [0] = 1;
res[i][i] = 1;
}
for(int i = 2; i < rowIndex; i ++){
for(int j = 1; j < i;j++){
res[i][j] = res[i-1][j-1]+res[i-1][j];
}
}
return res[rowIndex-1];
}
2.
從後往前處理
程式碼如下(示例):
int* getRow(int rowIndex, int* returnSize){
* returnSize = rowIndex + 1;
int* array = (int *)malloc(sizeof(int) * (rowIndex+1));
for(int i=0; i<rowIndex+1; i++){
array[i]=1;
for(int j=i-1; j>0; j--) array[j] = array[j] + array[j-1];
array[0] = 1;
}
return array;
}