1- // 1572. Matrix Diagonal Sum
2- // return the sum of the matrix diagonals. 返回正方形中對角線的總和
3- // sum X =>
4- // primary: 1 + 5 + 9
5- // secondary: 3 + 5 + 7
6-
7- // 1. 是二維陣列
8- // 2. 判斷陣列length是奇數或偶數,共有幾個二維陣列
9- // 3.
10- // a.第一個二維陣列:找該array中位於第0個位置和最後一個位置的值,之後其他二維陣列則取往後移一個位置的值
11- // b.最後一個二維陣列:找該array中位於第0個位置和最後一個位置的值
12-
13- // 二維陣列
14- // 判斷陣列length是奇數或偶數,共有幾個二維陣列
15- // ==> 找第一個和最後一個二維陣列中,第0個位置和最後一個位置的值
16- // 其他二維陣列則取往後移一個位置的值
17-
18- /*
19- Input: mat = [[1,2,3],
20- [4,5,6],
21- [7,8,9]]
22- Output: 25
23- Explanation: Diagonals sum: 1 + 5 + 9 + 3 + 7 = 25
24- Notice that element mat[1][1] = 5 is counted only once.
25- */
26-
271/**
2+ * 1572. Matrix Diagonal Sum
3+ *
284 * @param {number[][] } mat
295 * @return {number }
306 */
31- var diagonalSum = function ( mat ) {
32-
7+ var diagonalSum = function ( mat ) {
8+ // 二維陣列,裡面的陣列是奇數的,取該陣列偶數index值;裡面陣列是偶數的,取該陣列奇數index值
339 let result = 0 ;
34- let j = mat [ 0 ] . length - 1 ;
35- for ( let i = 0 ; i < mat . length ; i ++ , j -- ) {
36- if ( i !== j ) {
37- result += mat [ i ] [ j ] ;
38- }
39- result += mat [ i ] [ i ] ;
40-
41- // $result += (i != j) ? mat[i][j] : mat[i][i];
42- // let end = endTime(start);
43- // console.log(end);
10+ let len = mat . length ;
11+ let mid = Math . floor ( len / 2 ) ;
12+ for ( let i = 0 ; i < len ; i ++ ) {
13+ result += mat [ i ] [ i ] ;
14+ result += mat [ len - 1 - i ] [ i ] ;
15+ }
16+ if ( len % 2 != 0 ) {
17+ result -= mat [ mid ] [ mid ] ;
4418 }
4519 return result ;
4620} ;
47- const arr = [
48- [ 1 , 2 , 3 ] ,
49- [ 4 , 5 , 6 ] ,
50- [ 7 , 8 , 9 ]
51- ] ;
52- console . log ( diagonalSum ( arr ) ) ;
21+ let mat = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] ;
22+ // Output: 25
23+ // Explanation: Diagonals sum: 1 + 5 + 9 + 3 + 7 = 25
24+ // Notice that element mat[1][1] = 5 is counted only once.
25+ console . log ( diagonalSum ( mat ) ) ;
0 commit comments