Pascal's Triangle 1 & 2

这两题都比较简单,第一题输出杨辉三角,第二题输出特定的某一行,第二题要求空间复杂度为O(k)

代码如下:

Pascal‘s Triangle:

    public List<List<Integer>> generate(int numRows) {//direct simulate
        List<List<Integer>> rs = new LinkedList<List<Integer>>();
        if(numRows == 0)return rs;
        else {
            for(int i = 0; i< numRows; ++ i){
                if(i == 0){
                    List<Integer> row = new LinkedList<Integer>();
                    row.add(1);
                    rs.add(row);
                }else {
                    List<Integer> lastRow = rs.get(i - 1);
                    List<Integer> row = new LinkedList<Integer>();
                    row.add(1);

                    int k1 = 0, k2 = k1 +1;
                    for(;k2 < lastRow.size();){
                        row.add(lastRow.get(k1) + lastRow.get(k2));
                        k1 ++;
                        k2 ++;
                    }
                    row.add(1);
                    rs.add(row);
                }

            }
        }

        return rs;
    }

Pascal‘s Triangle II:

    public List<Integer> getRow(int rowIndex) { //space capacity O(K)
        List<Integer> rs = new LinkedList<Integer>();
        if(rowIndex < 0) return rs;
        else {
            if(rowIndex == 0){
                rs.add(1);
                return rs;
            }else {
                rs.add(1);
                int k1 = 2;
                while (k1 <= rowIndex + 1){
                    int k3 = 1;
                    rs.add(1);
                    while (k3 < k1 - 1){
                        rs.add(rs.get(0) + rs.get(1));
                        rs.remove(0);
                        k3 ++;

                    }
                    if(k3 == k1 -1){
                        rs.remove(0);
                    }
                    rs.add(1);

                    k1 ++;
                }
            }
        }
        return rs;
    }

Pascal's Triangle 1 & 2

时间: 2024-08-09 17:41:28

Pascal's Triangle 1 & 2的相关文章

(leetcode题解)Pascal&#39;s Triangle

Pascal's 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] ] 题意实现一个杨辉三角. 这道题只要注意了边界条件应该很好实现出来,C++实现如下 vector<vector<int>> generate(int

LeetCode (13) Pascal&#39;s Triangle (杨辉三角 )

题目描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return 从第三行开始,每行除了最左边和最右边两个数为1,其他数字都是上一行中相邻两个数字之和.根据上述规则可以写出下面的代码: class Solution { public: vector<vector<int> > generateRow1() { vector<in

118. Pascal&#39;s 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] ] 分析 第k层有k个元素,每层第一个及最后一个元素值为1,对于(k>2)层,第n(n>1 && n < k)个元素A[k][n] = A[k-1][n-1]+A[k-1][n];

119. Pascal&#39;s Triangle 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? 1 class Solution { 2 public: 3 vector<int> getRow(int rowIndex) { 4 5 vect

Java [Leetcode 119]Pascal&#39;s Triangle II

题目描述: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3,3,1]. 解题思路: 每次在上一个list前面插入1,然后后面的每两个间相加赋值给前一个数. 代码描述: public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> r

LeetCode OJ:Pascal&#39;s 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] ] 帕斯卡三角,很简单的问题,见代码: 1 class Solution { 2 public: 3 vector<vector<int>> generate(int numRows) {

Pascal&#39;s Triangle II 解答

Question Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3,3,1]. Solution Similar with Pascal's Triangle. Note that the index starts from 0. 1 public class Solution { 2 public List<Integer> getRow(in

[leedcode 119] Pascal&#39;s Triangle II

Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3,3,1]. public class Solution { public List<Integer> getRow(int rowIndex) { //由于需要O(k)空间,因此需要借助两个数组保存中间值,并交换两个数组,注意交换的方法! List<Integer> list=new

LeetCode——Pascal&#39;s Triangle

Description: 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] ] public class Solution { public List<List<Integer>> generate(int numRows) { List

LeetCode——Pascal&#39;s Triangle II

Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3,3,1]. public class Solution { public List<Integer> getRow(int rowIndex) { List<List<Integer>> list = new ArrayList<List&