public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        if (numRows == 0)
            return ans;
        List<Integer> parent = new ArrayList<Integer>();
        parent.add(1);
        ans.add(new ArrayList<Integer>(parent));
        for (int i = 1; i < numRows; ++i) {
            List<Integer> children = new ArrayList<Integer>(i + 1);
            children.add(1);
            for (int j = 1; j < parent.size(); ++j) {
                children.set(j, parent.get(j) + parent.get(j - 1));
            }
            children.add(1);
            parent = children;
            ans.add(new ArrayList<Integer>(parent));
        }
        return ans;
    }