每周一算法2017.11.3

Pascal's Triangle

描述:

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

中文: 给定一个数字,生成行数为这个数字的杨辉三角

分析:

1 每行开头结尾都为1。
2 每个数等于它上方两数之和。
3 每行数字左右对称,由1开始逐渐变大。
4 第n行的数字有n项。

代码:

java代码:

class Solution {  
    public List<List<Integer>> generate(int numRows) {
         List<List<Integer>> resList = new ArrayList<List<Integer>>();
          if(numRows == 0){
             return resList;
       }
        List<Integer> preList = new ArrayList<Integer>();
        preList.add(1);
        resList.add(preList);
         for(int i = 1; i<numRows; i++){
             List<Integer> curList = new ArrayList<Integer>();
             curList.add(1); 
             for(int j = 1; j<preList.size(); j++){ 
                 curList.add(preList.get(j-1) + preList.get(j));
             }
             curList.add(1);
             resList.add(curList);
             preList = curList;
         }
         return resList;
     }
}

Swift代码:

func generate(numRows:Int) -> [[Int]] {  
        var resultArray = [[Int]]()
        if numRows == 0 {
            return resultArray
        }
        var rowArray = [Int]()
        rowArray.append(1)
        resultArray.append(rowArray)
        for _ in 1 ..< numRows {
            var tempArray = [Int]()
            tempArray.append(1)
            for j in 1 ..< rowArray.count {
                tempArray.append(rowArray[j - 1] + rowArray[j])
            }
            tempArray.append(1)
            resultArray.append(tempArray)
            rowArray = tempArray
        }
        return resultArray
 }

本题来自leetcode

comments powered by Disqus