# Find difference between sums of two diagonals
For example, the square matrix is shown below:
1 2 3
4 5 6
9 8 9
The left-to-right diagonal = . The right to left diagonal = . Their absolute difference is .
Function description
Complete the function in the editor below.
diagonalDifference takes the following parameter:
- int arr[n][m]: an array of integers
Return
- int: the absolute diagonal difference
Sample Input
3 是長度
3
11 2 4
4 5 6
10 8 -12
# Solution
我覺得 hackerRank 其中一個難點是... 真的要很熟自己寫的語言
99% 的教程,都沒告訴你 list 是怎麼取數組裡的數組...
下面的 square matrix, 是存在一個 List<List<Integer>> arr
裡面。
11 2 4 | |
4 5 6 | |
10 8 -12 |
其實就是 [[11, 2, 4], [4, 5, 6], [10, 8, -12]]
如果用 arr.get(0)
會取出 [11, 2, 4]
如果想要再取 [11, 2, 4]
裡面的值的話,那就要再 get()
次。
比如我想取 2 這個值,那會是這樣: arr.get(0).get(1)
雖然很簡單!但是,真的好想知道,誰在刷題的時候,刷過題目會把 matrix 放在 list 裡啊 Q_Q。
HackerRank 一點細節都不放過。真的要把整個語言吃透了才能 crack hackerRank 的題... 但換個角度想想,練好了,基礎就很紮實了啦~ (安慰自己中...)
public static int diagonalDifference(List<List<Integer>> arr) { | |
// Write your code here | |
int lefttoRightSum = 0; | |
int righttoLeftSum = 0; | |
for (int i = 0; i < arr.size(); i++){ | |
lefttoRightSum += arr.get(i).get(i); | |
righttoLeftSum += arr.get(arr.size() - i - 1).get(i); | |
} | |
return Math.abs(lefttoRightSum - righttoLeftSum); | |
} | |
} |