题解 | #蛇形矩阵#发现数字规律,直接输出#java

蛇形矩阵

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

直接按规律逐行输出 每第i行的起始数字为:上一行 + i; 行内每第j个数依次增加量为:j + i + 1;

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int n = sc.nextInt();
            int head = 0, cur = 0;
            for (int i = 0; i < n; i++) {
                head = (i == 0) ? 1 : head + i;
                System.out.print(head);
                cur = head;
                for (int j = 1; j < n - i; j++) {
                    cur = cur + j + 1 + i;
                    System.out.print(" " + cur);
                }
                System.out.println(" ");
            }
        }
    }
}

也可存入数组,开辟数组的时间(49ms 11664K)竟然比上述方法的运行时间更短(85ms 14260K) = = 我不理解

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int n = sc.nextInt();
            int[][] nums = new int[n][];
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < n; i++) {
                nums[i] = new int[n - i];
                nums[i][0] = (i == 0) ? 1 : nums[i - 1][0] + i;
                sb.append(nums[i][0]);
                for (int j = 1; j < n - i; j++) {
                    nums[i][j] = nums[i][j - 1] + j + 1 + i;
                    sb.append(" ").append(nums[i][j]);
                }
                sb.append("\n");
            }
            System.out.print(sb);
        }
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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