mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 00:25:22 +08:00
add: leetcode 1572 solution
This commit is contained in:
@ -0,0 +1,16 @@
|
||||
package leetcode
|
||||
|
||||
func diagonalSum(mat [][]int) int {
|
||||
n := len(mat)
|
||||
ans := 0
|
||||
for pi := 0; pi < n; pi++ {
|
||||
ans += mat[pi][pi]
|
||||
}
|
||||
for si, sj := n-1, 0; sj < n; si, sj = si-1, sj+1 {
|
||||
ans += mat[si][sj]
|
||||
}
|
||||
if n%2 == 0 {
|
||||
return ans
|
||||
}
|
||||
return ans - mat[n/2][n/2]
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question1572 struct {
|
||||
para1572
|
||||
ans1572
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
type para1572 struct {
|
||||
mat [][]int
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans1572 struct {
|
||||
one int
|
||||
}
|
||||
|
||||
func Test_Problem1572(t *testing.T) {
|
||||
|
||||
qs := []question1572{
|
||||
|
||||
{
|
||||
para1572{[][]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}},
|
||||
ans1572{25},
|
||||
},
|
||||
|
||||
{
|
||||
para1572{[][]int{{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}},
|
||||
ans1572{8},
|
||||
},
|
||||
|
||||
{
|
||||
para1572{[][]int{{5}}},
|
||||
ans1572{5},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 1572------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans1572, q.para1572
|
||||
fmt.Printf("【input】:%v 【output】:%v \n", p, diagonalSum(p.mat))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
74
leetcode/1572.Matrix-Diagonal-Sum/README.md
Normal file
74
leetcode/1572.Matrix-Diagonal-Sum/README.md
Normal file
@ -0,0 +1,74 @@
|
||||
# [1572. Matrix Diagonal Sum](https://leetcode-cn.com/problems/matrix-diagonal-sum/)
|
||||
|
||||
|
||||
## 题目
|
||||
|
||||
Given a square matrix mat, return the sum of the matrix diagonals.
|
||||
|
||||
Only include the sum of all the elements on the primary diagonal and all the elements on the secondary diagonal that are not part of the primary diagonal.
|
||||
|
||||
**Example 1:**
|
||||
|
||||
```
|
||||
Input: mat = [[1,2,3],
|
||||
[4,5,6],
|
||||
[7,8,9]]
|
||||
Output: 25
|
||||
Explanation: Diagonals sum: 1 + 5 + 9 + 3 + 7 = 25
|
||||
Notice that element mat[1][1] = 5 is counted only once.
|
||||
```
|
||||
|
||||
**Example 2:**
|
||||
|
||||
```
|
||||
Input: mat = [[1,1,1,1],
|
||||
[1,1,1,1],
|
||||
[1,1,1,1],
|
||||
[1,1,1,1]]
|
||||
Output: 8
|
||||
```
|
||||
|
||||
**Example 3:**
|
||||
|
||||
```
|
||||
Input: mat = [[5]]
|
||||
Output: 5
|
||||
```
|
||||
|
||||
**Constraints:**
|
||||
|
||||
- n == mat.length == mat[i].length
|
||||
- 1 <= n <= 100
|
||||
- 1 <= mat[i][j] <= 100
|
||||
|
||||
## 题目大意
|
||||
|
||||
给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。
|
||||
|
||||
请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和
|
||||
|
||||
## 解题思路
|
||||
|
||||
- 根据题意,把主对角线和副对角线上的元素相加
|
||||
- 如果正方形矩阵的长度n为奇数,相加的结果需要减去mat[n/2][n/2]
|
||||
|
||||
## 代码
|
||||
|
||||
```go
|
||||
package leetcode
|
||||
|
||||
func diagonalSum(mat [][]int) int {
|
||||
n := len(mat)
|
||||
ans := 0
|
||||
for pi := 0; pi < n; pi++ {
|
||||
ans += mat[pi][pi]
|
||||
}
|
||||
for si, sj := n - 1, 0; sj < n; si, sj = si - 1, sj + 1 {
|
||||
ans += mat[si][sj]
|
||||
}
|
||||
if n % 2 == 0 {
|
||||
return ans
|
||||
}
|
||||
return ans - mat[n / 2][n / 2]
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user