关于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.一些精妙的算法又:快慢指针、动态规划、数组映射