mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +08:00
go版本解法
This commit is contained in:
@ -526,3 +526,89 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Go
|
||||||
|
|
||||||
|
前缀和
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"bufio"
|
||||||
|
"strings"
|
||||||
|
"strconv"
|
||||||
|
"math"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var n, m int
|
||||||
|
|
||||||
|
reader := bufio.NewReader(os.Stdin)
|
||||||
|
|
||||||
|
line, _ := reader.ReadString('\n')
|
||||||
|
line = strings.TrimSpace(line)
|
||||||
|
params := strings.Split(line, " ")
|
||||||
|
|
||||||
|
n, _ = strconv.Atoi(params[0])
|
||||||
|
m, _ = strconv.Atoi(params[1])//n和m读取完成
|
||||||
|
|
||||||
|
land := make([][]int, n)//土地矩阵初始化
|
||||||
|
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
line, _ := reader.ReadString('\n')
|
||||||
|
line = strings.TrimSpace(line)
|
||||||
|
values := strings.Split(line, " ")
|
||||||
|
land[i] = make([]int, m)
|
||||||
|
for j := 0; j < m; j++ {
|
||||||
|
value, _ := strconv.Atoi(values[j])
|
||||||
|
land[i][j] = value
|
||||||
|
}
|
||||||
|
}//所有读取完成
|
||||||
|
|
||||||
|
//初始化前缀和矩阵
|
||||||
|
preMatrix := make([][]int, n+1)
|
||||||
|
for i := 0; i <= n; i++ {
|
||||||
|
preMatrix[i] = make([]int, m+1)
|
||||||
|
}
|
||||||
|
|
||||||
|
for a := 1; a < n+1; a++ {
|
||||||
|
for b := 1; b < m+1; b++ {
|
||||||
|
preMatrix[a][b] = land[a-1][b-1] + preMatrix[a-1][b] + preMatrix[a][b-1] - preMatrix[a-1][b-1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
totalSum := preMatrix[n][m]
|
||||||
|
|
||||||
|
minDiff := math.MaxInt32//初始化极大数,用于比较
|
||||||
|
|
||||||
|
//按行分割
|
||||||
|
for i := 1; i < n; i++ {
|
||||||
|
topSum := preMatrix[i][m]
|
||||||
|
|
||||||
|
bottomSum := totalSum - topSum
|
||||||
|
|
||||||
|
diff := int(math.Abs(float64(topSum - bottomSum)))
|
||||||
|
if diff < minDiff {
|
||||||
|
minDiff = diff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//按列分割
|
||||||
|
for j := 1; j < m; j++ {
|
||||||
|
topSum := preMatrix[n][j]
|
||||||
|
|
||||||
|
bottomSum := totalSum - topSum
|
||||||
|
|
||||||
|
diff := int(math.Abs(float64(topSum - bottomSum)))
|
||||||
|
if diff < minDiff {
|
||||||
|
minDiff = diff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(minDiff)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user