題目描述

給定一個大小為NxN的正方形矩陣,請計算出其兩條對角線總和相減的絕對值。



原題網址

https://www.hackerrank.com/challenges/diagonal-difference

輸入格式

輸入的第一行是一個整數N,接下來的N行,每行各有N個數字,以空格分隔,用來組成一個NxN的矩陣資料。

輸出格式

輸出這個矩陣的兩個對角線數值總和相減之後的絕對值。

範例輸入

3
11  2   4
4   5   6
10  8 -12

範例輸出

15

額外解釋

第一條對角線為:

11
    5
      -12

第一條對角線的總和為:

11 + 5 - 12 = 4

第二條對角線為:

        4
    5
10

第二條對角線的總和為:

4 + 5 + 10 = 19

將兩條對角線的總和相減取絕對值:

|4 - 19| = 15

解題概念

先動腦簡化問題,因為我們只需要計算對角線的「差」,而不需要知道兩條對角線個別的「和」。所以在讀取完矩陣並建立出二維陣列物件之後,可以直接利用一個for迴圈,來累加兩條對角線的「差」,最後再使用「Math」類別所提供的「abs」方法來取得絕對值。

參考答案

import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) throws Exception {
        final Scanner sc = new Scanner(System.in);
        final int n = sc.nextInt();
        final int[][] array = new int[n][n];
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                array[i][j] = sc.nextInt();
            }
        }
        int difference = 0;
        for (int i = 0; i < n; ++i) {
            final int ii = n - i - 1;
            difference += array[i][i] - array[i][ii];
        }
        System.out.println(Math.abs(difference));
    }
}