vue element InfiniteScroll 無限滾動 入坑記錄
阿新 • • 發佈:2020-12-05
題目
給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。
原題連結
leetcode一些二維陣列的引數解釋
本題本身沒有什麼難度,是一道簡單題,但是在對二維陣列分配記憶體時,如果不熟悉很容易弄錯。先對刷題時常見的二維陣列的引數進行一下總結。
對於本題,函式形式如下:
int** generate(int numRows, int* returnSize, int** returnColumnSizes)
-
returnColumnSizes是一個一維陣列的地址的地址。(地址即指標),return-Column-Sizes,類似於returnSize,是一個“返回值”,返回的資訊是二維陣列的列數。
-
returnSize中要返回的資訊是二維陣列的行數。
因為要對傳入的引數進行讀寫,而非只是讀取。如果傳入為int,int*,函式並沒有對原來的陣列進行任何操作;
returnColumnSizes //是一維陣列的地址的地址
* returnColumnSizes //是一維陣列的地址
(* returnColumnSizes)[i] //是一維陣列的i個元素
解題思路
楊輝三角每行數字個數依次遞增,並且第[0][i]和[i][i]個元素都為1,利用此特性可以先更新第[0][i]和[i][i]個元素為1,接著再對中間元素進行處理,ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j],j從1開始小於i時結束,正好處理了所有中間數字。
程式碼如下:
int** generate(int numRows, int* returnSize, int** returnColumnSizes){ int** ans = malloc(sizeof(int*) * numRows); *returnSize = numRows; *returnColumnSizes = malloc(sizeof(int) * numRows); for(int i = 0; i < numRows; ++i){ ans[i] = malloc(sizeof(int) * (i + 1)); (*returnColumnSizes)[i] = i + 1; ans[i][0] = ans[i][i] = 1; for(int j = 1; j < i; ++j){ ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j]; } } return ans; }