1. 程式人生 > 其它 >dotnet core 和 dotnet Framework 啟動可執行檔案的差別

dotnet core 和 dotnet Framework 啟動可執行檔案的差別

技術標籤:leetcode精選top面試題演算法javaleetcode資料結構python

118. 楊輝三角

給定一個非負整數numRows,生成楊輝三角的前numRows行。

在楊輝三角中,每個數是它左上方和右上方的數的和

示例:

輸入: 5
輸出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

思路:

楊輝三角,知道上一行就可以求出下一行,但是注意每行的首尾元素都是1,需要單獨新增

 1 class Solution {
 2     public List<List<Integer>> generate(int numRows) {
 3         List<List<Integer>> res = new ArrayList<>();
 4         if(numRows <= 0){
 5             return res;
 6         }
 7         List<Integer> temp = new ArrayList<Integer>();
 8         temp.add(1);
 9 
10         res.add(temp);
11         for(int i = 1; i < numRows; i++){
12             List<Integer> nextRowList = new ArrayList<Integer>();
13             nextRowList.add(1);
14             for(int j = 0; j < temp.size() - 1; j++){
15                 // 遍歷上一行的每個元素,生成一個新元素新增到nextRowList中    
16                 nextRowList.add(temp.get(j) + temp.get(j + 1));
17             }
18             nextRowList.add(1);
19             res.add(new ArrayList<Integer>(nextRowList));
20             temp = nextRowList;     // 更新temp
21         }
22         return res;
23     }
24 }
leetcode 執行用時:1 ms, 在所有Java提交中擊敗了66.94%的使用者 記憶體消耗:36.2 MB, 在所有Java提交中擊敗了80.37%的使用者

複雜度分析:

時間複雜度:O(n2)。雙重迴圈,但是內層迴圈的迭代次數分別是1, 2, 3,.., n; 所以時間複雜度為O(1 + 2 + 3 + n) = O((n2+n)/2), 所以時間複雜度為O(n2)。 空間複雜度:O(n)。如果不考慮儲存結果的列表集合,演算法需要一個存放上一行的結果的列表,但是這個列表在使用完之後就會被回收,所以只需要計算一次,則空間複雜度為O(n)。