Diagonal Difference
Problem
Diberikan matriks persegi n × n, hitung selisih mutlak antara jumlah elemen pada diagonal utama (kiri-atas ke kanan-bawah) dan diagonal sekunder (kanan-atas ke kiri-bawah).
Input
Baris 1: integer
n(ukuran matriks)nbaris berikutnya: masing-masingninteger
Output
Integer:
|sum_primary - sum_secondary|
Contoh
Input:
3
11 2 4
4 5 6
10 8 -12
Output:
15Intuisi
Diagonal utama: elemen
(i, i)Diagonal sekunder: elemen
(i, n-1-i)Hitung kedua jumlah dalam satu loop, lalu ambil nilai mutlak selisihnya.
Contoh Langkah-demi-Langkah
n = 3
arr = [[11, 2, 4],
[4, 5, 6],
[10, 8, -12]]
Primary: 11 + 5 + (-12) = 4
Secondary: 4 + 5 + 10 = 19
|4 - 19| = 15Algoritma
primary = 0, secondary = 0
untuk i dari 0 sampai n-1:
primary += arr[i][i]
secondary += arr[i][n-1-i]
kembalikan |primary - secondary|Waktu:
O(n)Ruang:
O(1)
Implementasi
public static int diagonalDifference(List<List<Integer>> arr) {
int n = arr.size();
int primary = 0, secondary = 0;
for (int i = 0; i < n; i++) {
primary += arr.get(i).get(i);
secondary += arr.get(i).get(n - 1 - i);
}
return Math.abs(primary - secondary);
}func diagonalDifference(arr [][]int) int {
n := len(arr)
primary, secondary := 0, 0
for i := 0; i < n; i++ {
primary += arr[i][i]
secondary += arr[i][n-1-i]
}
diff := primary - secondary
if diff < 0 {
return -diff
}
return diff
}Ringkasan
Bahasa
Akses Elemen
Hitung Mutlak
Kompleksitas
Java
arr.get(i).get(j)
Math.abs()
O(n)
Go
arr[i][j]
if diff < 0
O(n)
Satu loop, dua akumulator, selisih mutlak → solusi optimal.
Last updated