代码经验

关于leetcode编程的一些经验(c语言部分)

1.c语言返回数组长度是指针类型,因此最后要给它赋值

2.c语言的二维数组分配空间与赋值,如下

 

int** generate(int numRows, int* returnSize, int** returnColumnSizes){
    int **arr=(int**)malloc(numRows*sizeof(int*));
    *returnSize=numRows;//数组行数保存
    *returnColumnSizes = (int*)malloc(numRows*sizeof(int));//保存数组每行列数
    for(int i=0;i<numRows;i++){
        arr[i]=(int*)malloc((i+1)*sizeof(int));
        (*returnColumnSizes)[i]=i+1;//赋值
        arr[i][0]=arr[i][i]=1;
        for(int j=1;j<=i/2;j++){
            arr[i][j]=arr[i][i-j]=arr[i-1][j-1]+arr[i-1][j];
        }
    }
    return arr;
}

3.代码测试关键在于测试用例,只要用例能够覆盖所有条件,并且代码能够跑通这些用例,那么说明这个算法是正确的。

4.全局变量要在函数里面二次声明(目前还不知道为什么,最好不用全局变量)

5.一些精妙的算法又:快慢指针、动态规划、数组映射

  • 代码经验已关闭评论
    A+