zoukankan      html  css  js  c++  java
  • Pascal'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?

    这次只输出一行,而且k是从0开始的。

    由于题目要求o(k)空间,所以只能使用一个list。因为计算当前行的数据,要用到前一行的数据,所以只能在一个list中操作。

    见注释,该list存的是上一行的数据,这时要从这些数据中计算出当前行的数据在存进list,当前行list首先比上一行长度大一个,最后一个添加1就行,然后中间的数据j等于前一行j-1和j的和。若从前往后计算并存入中间数据,会有覆盖并影响后面的值。所以从后往前存,当前行的j要前一行的j-1和j,当前行j-1要前一行的j-2和j-1,所以先存j,再算j-1.。。并不会影响其他值得计算。

    记住:list不只有add方法,还有set(index,element),add(index,element)方法

    class Solution {
        public List<Integer> getRow(int rowIndex) {
            
            List<Integer> row=new ArrayList<>();
            if(rowIndex<0) return row;
            for(int i=0;i<=rowIndex;i++){
                row.add(1);//第一次在头上加1,以后都是在最后添加1,每次操作都是在操作中间元素。
                for(int j=i-1;j>0;j--)
                    row.set(j,row.get(j-1)+row.get(j));//set是会覆盖原来位置的元素。所以从后往前设置。
                
            }
            return row;
        }
    }
  • 相关阅读:
    windows下命令行
    利用border画三角形
    正则
    flex布局
    css笔记
    W3C标准
    SEO相关
    左边固定,右边自适应(解决方案)
    容错性测试的测试点
    Charles安装及使用教程
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8081237.html
Copyright © 2011-2022 走看看