zoukankan      html  css  js  c++  java
  • leetcode118- Pascal's Triangle I & II- easy

    I:

    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]
    ]

    II:

    Given an index k, return the kth row of the Pascal's triangle.

    For example, given k = 3,
    Return [1,3,3,1].

    Note:
    Could you optimize your algorithm to use only O(k) extra space?

    算法,都可以根据上一层算出下一层。如果要II里面的O(k) space,可以用一个滚动的高度为2的二维数组来节省空间,因为每次只和前一次的内容有关,不需要存储太久远的内容。

    实现:

    题目 I

    class Solution {
        public List<List<Integer>> generate(int numRows) {
            List<List<Integer>> result = new ArrayList<>();
            if (numRows < 1) {
                return result;
            }
            
            List<Integer> crt = new ArrayList<>();
            crt.add(1);
            result.add(crt);
            for (int i = 1; i < numRows; i++) {
                List<Integer> prev = result.get(result.size() - 1);
                crt = new ArrayList<Integer>();
                crt.add(1);
                for (int j = 0; j < prev.size() - 1; j++) {
                    crt.add(prev.get(j) + prev.get(j + 1));
                }
                crt.add(1);
                result.add(crt);
            }
            return result;
        }
    }

    题目II

    class Solution {
        public List<Integer> getRow(int rowIndex) {
            List<Integer> result = new ArrayList<Integer>();
            int[][] a = new int[2][rowIndex + 1];
            a[0][0] = 1;
            for (int i = 1; i <= rowIndex; i++) {
                a[i % 2][0] = 1;
                for (int j = 1; j <= i; j++) {
                    a[i % 2][j] = a[(i + 1) % 2][j - 1] + a[(i + 1) % 2][j];
                }
            }
            for (int i = 0; i < rowIndex + 1; i++) {
                result.add(a[rowIndex % 2][i]);
            }
            return result;
        }
    }
  • 相关阅读:
    P2216 [HAOI2007]理想的正方形(dp+单调队列优化)
    洛谷P1415 拆分数列(dp)
    2017 ACM-ICPC EC-Final ShangHai 东亚洲大陆-上海
    sql查询50题
    虚拟机安装
    Kick Start 2019 Round A Parcels
    Kick Start 2019 Round B Energy Stones
    【DP 好题】Kick Start 2019 Round C Catch Some
    【图论好题】ABC #142 Task F Pure
    【DP 好题】hihoCoder #1520 古老数字
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7986357.html
Copyright © 2011-2022 走看看