• LeetCode 118. Pascal's Triangle


    原题链接在这里:https://leetcode.com/problems/pascals-triangle/

    题目:

    Given numRows, generate the first numRows of Pascal's triangle.

    For example, given numRows = 5,
    Return

    [
         [1],
        [1,1],
       [1,2,1],
      [1,3,3,1],
     [1,4,6,4,1]
    ]

    题解:

    每一行cur都是前一行pre生成出来的,从第三行开始除了首末加"1"外还需要把pre的每两个相邻的和加到cur里。

    Time Complexity: O(1 + 2 + 3 + 4... + n) = O(n^2).

    Space: O(1), regardless res.

    AC Java:

     1 public class Solution {
     2     public List<List<Integer>> generate(int numRows) {
     3         List<List<Integer>> res = new ArrayList<List<Integer>>();
     4         if(numRows == 0){
     5             return res;
     6         }
     7         
     8         List<Integer> pre = new ArrayList<Integer>();
     9         pre.add(1);
    10         res.add(pre);
    11         
    12         for(int i = 0; i<numRows-1; i++){
    13             List<Integer> cur = new ArrayList<Integer>();
    14             cur.add(1); //首部加第一个1
    15             for(int j = 1; j<pre.size(); j++){ 
    16                 //第三行才会进入此循环
    17                 cur.add(pre.get(j-1) + pre.get(j));
    18             }
    19             cur.add(1); //末尾加最后一个1
    20             res.add(cur);
    21             pre = cur;
    22         }
    23         return res;
    24     }
    25 }

     跟上一道Pascal's Triangle II

  • 相关阅读:
    最小生成树算法
    并查集
    背包问题
    木桶排序
    STL之vector
    STL中的queue用法与stack用法对比
    快速幂求模
    归并排序+典型例题(逆序对)
    负进制转换
    冒泡排序
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/5103001.html
Copyright © 2020-2023  润新知