• Pascal's Triangle


    package cn.edu.xidian.sselab.array;

    import java.util.ArrayList;
    import java.util.List;

    /**
     *
     * @author zhiyong wang
     * title:Pascal's Triangle
     * content:
     * 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 PascalTriangle {

        //这个地方一开始自己没有考虑到每次都要新建一个数组对象来存放数据,
        //调用rows.clear();添加到最终结果里面的数据又被清空了,因为他们指向了相同的地址空间
        //还有一个自己新学习到的地方,rows.add(0,1);每次在数组的第一个位置新添加一个1,而不是替换
        //rows.set(0,1);每次将数组第一个位置的数值替换成1
        //最重要的学到的新内容:new ArrayList<Integer>(Object obj); 可以直接加参数,表示的意义是将obj的内容复制给一个新的对象
        //具体实现过程是,每次循环都在第一个位置插入1,然后对数组后面的数字相邻的两两求和,替换掉对应位置上的数值,从而得到下一个结果
        public List<List<Integer>> generate(int numRows){
            List<List<Integer>> allRows = new ArrayList<List<Integer>>();
            List<Integer> rows = new ArrayList<Integer>();
            for(int i=0;i<numRows;i++){
                rows.add(0, 1);
                for(int j=1;j<rows.size()-1;j++){
                    rows.set(j, rows.get(j)+rows.get(j+1));
                }
                allRows.add(new ArrayList<Integer>(rows));
            }
            return allRows;
        }
        
    }

  • 相关阅读:
    mysql 加入列,改动列,删除列。
    C语言中的static 具体分析
    [Python网络编程]gevent httpclient以及网页编码
    iOS学习之 plist文件的读写
    数据库设计中的14个技巧
    最简单的基于FFMPEG的封装格式转换器(无编解码)
    一次重要的爱情婚姻抉择,您怎么看?
    2014年到期的myeclipse5.5.1注冊码
    24点经典算法
    使用val()方法设置表单中的默认选中项
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5062332.html
Copyright © 2020-2023  润新知