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;
        }
    }
  • 相关阅读:
    有效获取状态栏(StatusBar)高度
    各种数据库连接
    Spring AOP 原理
    Spring ioc 原理
    转载的别人的ajax跨域解决方法
    如何监听input的脚本赋值
    JAVA之Socket编程
    JAVA中的多线程
    JAVA文件操作
    实验三 kali下metasploit的漏洞攻击实践
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7986357.html
Copyright © 2011-2022 走看看