1. 程式人生 > 實用技巧 >vue element InfiniteScroll 無限滾動 入坑記錄

vue element InfiniteScroll 無限滾動 入坑記錄

題目

給定一個非負整數 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;
}