zoukankan      html  css  js  c++  java
  • 118. Pascal's Triangle

    翻译:给定行数,生成Pascal三角的第一行?(应该是所有行,不止第一行)

    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]
    ]
    

    大神代码(rheaxu

    public class Solution {

    public List<List<Integer>> generate(int numRows)
    {
    	List<List<Integer>> allrows = new ArrayList<List<Integer>>();//1.泛型,<>中的内容是指定该数组中存的类型,如这句,意为该数组中每个元素都是一个List数组,而且该list数组中每个元素都是Integer。2.多态,List是一个接口,ArrayList是其实现类,可看作子类(不对的话请读者指正),多态是指父类的引用指向子类对象,也就是List类的引用实际指向ArrayList,而在运行中,会调用子类重写的父类的方法。具体可查阅多态相关资料。
    	ArrayList<Integer> row = new ArrayList<Integer>();//1.泛型,该ArrayList数组中存放的元素类型为Integer
    	for(int i=0;i<numRows;i++)
    	{
    		row.add(0, 1);
    //add和set的区别 set()是更新,更新指定下标位置的值。
    //add()是添加,区别于一般的add(E e),这个就是有个位置的概念,特殊位置之后的数据,依次往后移动就是了。
    //在此意思为,将第0位设置为1,其它元素依次往后挪,这也就实现了随着层数增加,大小增加。
    for(int j=1;j<row.size()-1;j++)//只设置中间的内容,等于上一行的对应位置相加,第一位和最后一位不做处理,第一位也就是下标为0的位置已设为1,最后一位是前面推后的,也是1 row.set(j, row.get(j)+row.get(j+1)); allrows.add(new ArrayList<Integer>(row)); } return allrows; }

    }

    我的代码

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.lang.Integer;

    class Solution {

    public List<List<Integer>> generate(int numRows) {

    Map lists=new HashMap();

    for(int i=2;i<numRows;i++){
    List<Integer> list = new ArrayList<Integer>();
    lists.put(("list"+i),list);
    }

    List<List<Integer>> List = new ArrayList<List<Integer>>();
    if (numRows==0)
    return List;
    List<Integer> list0 = new ArrayList<Integer>();
    List<Integer> list1 = new ArrayList<Integer>();
    List<Integer> temp = new ArrayList<Integer>();

    list0.add(1);
    List.add(list0);
    if (numRows==1)
    return List;

    list1.add(1);
    list1.add(1);
    List.add(list1);
    if (numRows==2)
    return List;

    for (int i = 2; i < numRows; i++) {
    temp=List.get(i-1);
    List<Integer> listi =(java.util.List<Integer>) lists.get(("list"+i));
    listi.add(1);
    for (int j=1;j<i;j++){
    listi.add(temp.get(j-1)+temp.get(j));
    }
    listi.add(1);
    List.add(listi);
    }

    return List;
    }
    }

  • 相关阅读:
    Ubuntu Git GUI工具GitKraken安装
    轻松理解String.intern()
    Ubuntu MySQL安装
    稳定与不稳定的人生(转自知乎)
    【推荐】我们这一代人的困惑
    没关系,因为你是好人呀
    论文--Topic-Sensitive PageRank
    论文笔记-Mining latent relations in peer-production environments
    Open Source Book For ML
    LeetCode-Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/mafang/p/8383931.html
Copyright © 2011-2022 走看看