Leetcode - Pascal's Triangle

Paste_Image.png

My code:

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<List<Integer>>();
        if (numRows <= 0)
            return result;
        
        List<Integer> newList = new ArrayList<Integer>();
        newList.add(1);
        result.add(newList);
        if (numRows == 1)
            return result;
        
        newList = new ArrayList<Integer>();
        newList.add(1);
        newList.add(1);
        result.add(newList);
        if (numRows == 2)
            return result;
        
        
        int[] number = new int[numRows];
        number[0] = 1;
        number[1] = 1;
        for (int i = 3; i <= numRows; i++) {
            int[] newNumber = new int[numRows];
            newList = new ArrayList<Integer>();
            for (int j = 0; j < i; j++) {
                if (j == 0) {
                    newList.add(1);
                    newNumber[j] = 1;
                }
                else if (j == i - 1) {
                    newList.add(1);
                    newNumber[j] = 1;
                }
                else {
                    newList.add(number[j - 1] + number[j]);
                    newNumber[j] = number[j - 1] + number[j];
                }
            }
            number = newNumber;
            result.add(newList);
        }
        return result;
    }
    
    public static void main(String[] args) {
        Solution test = new Solution();
        System.out.println(test.generate(5));
    }
}

My test result:

這次作業不是很難,就是Array操作。

**
總結:終于到40題了。其實,如果一開始刷簡單題,那么很快就能沖到80題。但我還是穩扎穩打吧。
**
Anyway, Good luck, Richardo!

My code:

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

這次代碼寫的比上次簡單多了。簡單題。
我記得有道題,也是這樣的三角形,然后要求從頂端到底部的和最小值。我還記得解法的。

Anyway, Good luck, Richardo!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容