0
点赞
收藏
分享

微信扫一扫

118. Pascal‘s Triangle

英乐 2022-05-02 阅读 93

大学时候的经典题目,满满的回忆。

key point,是建立一个二维数组。

ArrayList的扩容机制:

        当向ArrayList中添加元素的时候,ArrayList的存储容量如果满足新元素的容量要求,则直接存储;ArrayList的存储容量如果不满足新元素的容量要求,ArrayList会增加自身的存储大小,以达到存储新元素的要求。

public boolean add(E e) {
        //判断是否可以容纳e,若能,则直接添加在末尾;若不能,则进行扩容,然后再把e添加在末尾
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        //将e添加到数组末尾
        elementData[size++] = e;
        return true;
    }

不像int[][]型的二维数组需要一开始就确认大小关系,这样可以节省大量的空间

 public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> resultArray=new ArrayList<List<Integer>>();

        if(numRows==0)
            return resultArray;
         if(numRows==1){
            resultArray.add(new ArrayList<Integer>());
            resultArray.get(0).add(0,1);
            return resultArray;
        }

        if(numRows==2){
            resultArray.add(new ArrayList<Integer>());
            resultArray.get(0).add(0,1);

            resultArray.add(new ArrayList<Integer>());
            resultArray.get(1).add(0,1);
            resultArray.get(1).add(1,1);

            return resultArray;
        }

        else{
            resultArray.add(new ArrayList<Integer>());
            resultArray.get(0).add(0,1);

            resultArray.add(new ArrayList<Integer>());
            resultArray.get(1).add(0,1);
            resultArray.get(1).add(1,1);


            for(int j=2;j<numRows;j++){
                resultArray.add(new ArrayList<Integer>());
                resultArray.get(j).add(0,1);

                for(int i=1;i<j;i++){
                   resultArray.get(j).add(i,resultArray.get(j-1).get(i-1)+resultArray.get(j-1).get(i));
                }
                resultArray.get(j).add(j,1);
            }
            return resultArray;
        }
    }
举报

相关推荐

0 条评论