lletcode楊輝三角II

2021-10-03 18:14:00 字數 1278 閱讀 5435

1.暴力解法

設二維陣列儲存元素,並利用a[i][j]=a[i-1][j-1]+a[i-1][j]

**如下:

class solution ;

vector> res (rowindex+1,vector(rowindex+1,0));

res[0][0]=1;

res[1][0]=1;

res[1][1]=1;

for(int i=2;i<=rowindex;i++)

for(int j=0;j<=i;j++)

if(j==0||j==i)

res[i][j]=1;

else

res[i][j]=res[i-1][j-1]+res[i-1][j];

return res[rowindex];}};

2.觀察法

用一維陣列儲存結果

觀察第0行   1

觀察第1行   1 1        //是在上一行後面新增了1

觀察第2行   1 2  1    // 是在上一行後面加1,此時陣列為1 1 1,令a[1]=a[0]+a[1],即2=1+1,

觀察第3行   1 3 3  1  //首先在上一行末尾加1,此時陣列為 1 2 1 1,令a[2]=a[1]+a[2]=2+1=3,a[1]=a[0]+a[1]=1+2=3

第四行 1 4 6 4 1   //在上一行末尾加1,1 3 3 1 1,a[3]=a[2]+a[3]=3+1=4,a[2]=a[1]+a[2]=3+3=6,a[1]=a[0]+a[1]=1+3=4

之後的每一行,首先在陣列末尾新增元素1,

然後對於該行,如果不是第乙個或最後乙個元素,設為j元素,則a[j]=a[j-1]+a[j]

**如下:

class solution 

}return res; }};

3.數學公式法

楊輝三角可以看成由組合數構成

其中:且:

此時,設定pre儲存上一次的結果,然後遍歷即可

**如下:

class solution 

return res; }};

楊輝三角 II

給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 3 輸出 1,3,3,1 高階 你可以優化你的演算法到 o k 空間複雜度嗎?class solution if numrows 0 int array numrows num...

楊輝三角 II

給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。示例 輸入 3 輸出 1,3,3,1 對於該問題,我用了 3 種實現方法 方法一 暴力破解法。楊輝三角的確定需要上一行的元素,用 currentrow 表示當前行,prerow 表示上一行,求得下標為 k 的行。此方法相當於建立了乙個 ...

119 楊輝三角 II

略。注意是用o k 的空間完成,而不要求時間複雜度 時間複雜度沒法再小了應該只能是o n 2 11 1121 1331 這個二維 從左往右表示實際題需的row陣列 從上往下表示依據時間進展,不同時刻row陣列的樣子。每次形成row陣列時,應該從最右邊的1開始生成,向左,終止於最左邊的1。而不是相反的...