问题遇到的现象和发生背景
我在力扣上刷题的时候,被一个函数的指针参数给难住了?想问一问关于指针参数的问题
问题是:
- 杨辉三角 II
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3
输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0
输出: [1]
示例 3:
输入: rowIndex = 1
输出: [1,1]
提示:
0 <= rowIndex <= 33
用代码块功能插入代码,请勿粘贴截图
首先是出题人给的函数格式:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* getRow(int rowIndex, int* returnSize){
}
这是我写的代码:
int* getRow(int rowIndex, int* returnSize){
int i,j;
int *row=(int*)malloc(sizeof(int)*(rowIndex+1)); //注意这里的“rowIndex+1”
memset(row,0,sizeof(int)*(rowIndex+1)); //这句也是
row[0]=1;
for(i=1;i<=rowIndex;i++){
for(j=i;j>0;j--){
row[j]+=row[j-1];
}
}
return row;
}
提交结果显示解答错误。
下面这个是正确的版本:
int* getRow(int rowIndex, int* returnSize){
int i,j;
*returnSize=rowIndex+1; //用了它给的指针参数
int *row=(int*)malloc(sizeof(int)*( *returnSize)); //把rowIndex+1 改成 *returnSize了
memset(row,0,sizeof(int)*( *returnSize)); //这句也是
row[0]=1;
for(i=1;i<=rowIndex;i++){
for(j=i;j>0;j--){
row[j]+=row[j-1];
}
}
return row;
}
运行结果及报错内容
具体错在哪我也不知道
我的解答思路和尝试过的方法
就用了个动态规划
我想要达到的结果
我想知道为啥用rowIndex+1就是错的,而用*returnSize就对了,应该是我在函数的指针参数这一块有些迷糊,想向大家请教一下函数的指针参数的知识,特别像上面这样的问题。