码迷,mamicode.com
首页 > 其他好文 > 详细

118. Pascal's Triangle

时间:2018-01-30 16:42:04      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:discuss   ash   public   依次   hash   sdn   中间   util   实现类   

翻译:给定行数,生成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;
}
}

 

 

 

 

118. Pascal's Triangle

标签:discuss   ash   public   依次   hash   sdn   中间   util   实现类   

原文地址:https://www.cnblogs.com/mafang/p/8383931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!