1. 程式人生 > >118. Pascal's Triangle

118. Pascal's Triangle

ria 子類重寫 實現 java 大小 父類 方法 類對象 scrip

翻譯:給定行數,生成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