题解 | #蛇形矩阵#

蛇形矩阵

http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

例如,当输入5时,应该输出的三角形为:
可分析出 
1.每一行的数字比"后面一行"即上一行对应下标的后一个数字小1. 比如2比3小1,5比6小1.
那么只要知道第一行的数字 就可以得出第2行、第3行的数据了。第一行的数据可以找到规律依次递增 2  3  4  5 (到5就停了,这里的5等于输入的n)
1 3 6 10 15

2 5 9 14

4 8 13

7 12

11

import java.util.*; public class Main{

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.nextLine());
    List<List<Integer>> list =new ArrayList();
    // 由分析可得 第一行数字从1到3需+2, 从3到6需加3,从6到10需+4... 一直加到n=5 --》得到15 最后一个数字
    int index = 1;
    
    List<Integer> firstList = new ArrayList();
    int addNum = 0;
    while(index<=n){
        addNum = addNum+index;
        firstList.add(addNum);
        index++;
    }
    list.add(firstList);
    for(int i=1;i<n;i++){
        List<Integer> subList = new ArrayList();
        // 循环放入
        List<Integer> preList = list.get(i-1);
        for(int k =1;k<preList.size();k++){
            // 新的一行的某个元素 = 上一行的元素的后一个 -1
            subList.add(preList.get(k)-1);
        }
        list.add(subList);
    }
    // 循环输出
    for(int i=0;i<list.size();i++){
        List<Integer> subList = list.get(i);
        for(int k =0;k<subList.size();k++){
            System.out.print(subList.get(k)+" ");
        }
        System.out.println();
    }
}

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务