PTA-java-上三角数字三角形 运行超时怎么改善?

import java.util.Scanner;
public class MA{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int cnt=1;
        for(int i=1;i<=n;i++){
        for(int j=1;j<=n-i+1;j++){
            System.out.printf("%4d",cnt++);
        }
        System.out.println();
 	} 
        }
}

 

你这个的时间复杂度为O(n^2)了,用下面的代码试一下:下面的代码时间复杂度为O(n)

import java.util.Scanner;
public class MA {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = (n+1)*n/2;//数字总个数
        int k = 1;
        for(int i = 1; i <= m; i++){
            if(k == n){
                System.out.printf("%4d\n", i);
                k = 1;
                n--;
            }else{
                System.out.printf("%4d", i);
                k++;
            }
        }
    }
}