[LeetCode]--118. Pascal's Triangle

    xiaoxiao2026-04-10  7

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

    我是用数组做的,在草稿纸上稍微画一画应该就能找到数组下标的规律。

    public List<List<Integer>> generate(int numRows) { List<Integer> list = new ArrayList<Integer>(); List<List<Integer>> resultList = new ArrayList<List<Integer>>(); int[][] temp = new int[numRows][numRows]; for (int i = 0; i < numRows; i++) { temp[i][0] = 1; temp[i][i] = 1; for (int j = 0; j <= i; j++) { if (j < i && i > 1 && j > 0) temp[i][j] = temp[i - 1][j - 1] + temp[i - 1][j]; list.add(temp[i][j]); } resultList.add(list); list = new ArrayList<Integer>(); } return resultList; }

    看了网上的解答:

    public ArrayList<ArrayList<Integer>> generate(int numRows) { ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>(); if (numRows == 0) { return rst; } ArrayList<Integer> first = new ArrayList<Integer>(); first.add(0, 1); rst.add(first); for (int i = 1; i < numRows; i++) { ArrayList<Integer> tmp = new ArrayList<Integer>(i + 1); for (int j = 0; j < i + 1; j++){ tmp.add(-1); } ArrayList<Integer> prev = rst.get(i - 1); tmp.set(0, prev.get(0)); tmp.set(i, prev.get(i - 1)); for (int j = 1; j < i; j++){ tmp.set(j, prev.get(j - 1)+prev.get(j)); } rst.add(tmp); } return rst; }

    是不是还没有我的那个好,哈哈哈,一看就是三层for循环。

    最新回复(0)