[leetcode] 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]
]
https://oj.leetcode.com/problems/pascals-triangle/
思路:按照规律根据上一行的数据生成即可。
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(numRows<=0) return res; List<Integer> last = new ArrayList<Integer>(); for(int i=0;i<numRows;i++){ List<Integer> cur = new ArrayList<Integer>(); for(int j=0;j<=i;j++){ if(j==0||j==i) cur.add(1); else cur.add(last.get(j-1)+last.get(j)); } res.add(cur); last=cur; } return res; } }
第二遍记录:注意cur每次都生成新的,循环完一行后赋值给pre。
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(numRows == 0) return res; List<Integer> pre = new ArrayList<Integer>(); for(int i=0;i < numRows;i++){ List<Integer> cur = new ArrayList<Integer>(); for(int j=0;j<=i;j++){ if(j==0||j==i){ cur.add(1); }else{ cur.add(pre.get(j-1)+pre.get(j)); } } res.add(cur); pre =cur; } return res; } }
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号