shaokel
2019-07-28 13:35
采纳率: 98.5%
浏览 334
已采纳

Java杨辉三角数组越界

图片说明

package com.student.play;

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

class Solution {
    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> triangle = new ArrayList<List<Integer>>();

        if (numRows == 0) {
            return triangle;
        }

        triangle.add(new ArrayList<>());
        triangle.get(0).add(1);

        for (int rowNum = 1; rowNum < numRows; rowNum++) {
            List<Integer> row = new ArrayList<>();//当前行
            List<Integer> prevRow = triangle.get(rowNum-1);//上一行

            row.add(1);

            for (int j = 1; j < rowNum; j++) {
                row.add(prevRow.get(j-1) + prevRow.get(j));
            }

            row.add(1);
        }
        return triangle;    
    }

    public static void main(String[] args) {
        int numRows = 5;
        generate(numRows);
    }
}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2019-07-28 14:22
    已采纳
    row.add(1);
    后面加上
    triangle.add(row);
    
    另外main
            int numRows = 5;
            List<List<Integer>> list = generate(numRows);
                    for (List<Integer> l : list)
                    {
                        for (Integer i : l)
                        {
                            System.out.print(i + " ");
                        }
                        System.out.println("");
                    }
    
    打赏 评论
  • Json-Huang 2019-07-28 17:06

    楼上说的对,但triangle.add(row);只能加一个,不要row.add(1);后面都加

    打赏 评论

相关推荐 更多相似问题