首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 打印數字三角形:2n 行對稱模式 (雲計算面試題)

     編輯:程式設計疑難解答

題目

輸入 n,打印 2n 行:前 n 行遞增,後 n 行遞減對稱。
n=4 時:
1
2*3
4*5*6
7*8*9*10
7*8*9*10
4*5*6
2*3
1

算法

  1. 預計算每行起始數字 `start[row]`:`start[1]=1`, `start[i]=start[i-1]+i-1`。
  2. 雙循環打印上半部,再逆序打印下半部 (復用行字符串)。

代碼實現


public void printNum(int n) {
    int[] start = new int[n+2];
    for (int i=1; i<=n; i++) start[i] = (i==1)?1:start[i-1]+i-1;
    
    String[] lines = new String[n+1];
    for (int r=1; r<=n; r++) {
        StringBuilder sb = new StringBuilder();
        for (int k=0; k0) sb.append('*');
            sb.append(start[r]+k);
        }
        lines[r] = sb.toString();
        System.out.println(lines[r]);
    }
    for (int r=n; r>=1; r--) System.out.println(lines[r]);
}

複雜度

  • 時間 O(n²),空間 O(n)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved