1252. 奇数值单元格的数目

image.png
image.png
image.png

这个题的难点就是真的就是读懂题意,也就是理解多维数组是横坐标纵坐标是咋回事 ,就可以迎刃而解,

解释:最开始的矩阵是 [[0,0,0],[0,0,0]]。
输入:n = 2, m = 3, indices = [[0,1],[1,1]]
输出:6
解释:最开始的矩阵是 [[0,0,0],[0,0,0]]。
第1次[0,1]操作 先对第0行加1处理[[1,1,1],[0,0,0]] 然后对对第1列加1处理[[1,2,1],[0,1,0]]。
第2次[1,1]操作 先对第1行加1处理[[1,2,1],[1,2,1]] 然后对对第1列加1处理[[1,3,1],[1,3,1]]。
最后的矩阵是 [[1,3,1],[1,3,1]],里面有 6 个奇数。

1 先构造出多维数组
2 indices 也是一个多维数组 里面的每个一个数组 第一个元素代表横行 第二个代表列
3 先对横行做加1 在对纵行加1

  1. package main
  2. import "fmt"
  3. func oddCells(n int, m int, indices [][]int) int {
  4. grip :=make([][]int,n)
  5. for i:=0;i<n;i++{
  6. grip[i] = make([]int,m)
  7. }
  8. for i:=0;i<len(indices);i++{
  9. r := indices[i][0]
  10. for j:=0;j<len(grip[r]);j++{
  11. grip[r][j]++
  12. }
  13. c := indices[i][1]
  14. for j:=0;j<len(grip);j++{
  15. grip[j][c]++
  16. }
  17. }
  18. var res int
  19. for i:=0;i<n;i++{
  20. for j:=0;j<m;j++{
  21. if grip[i][j]%2!=0{
  22. res++
  23. }
  24. }
  25. }
  26. return res
  27. }
  28. func main() {
  29. fmt.Println(oddCells(2,3,[][]int{{0,1},{1,1}}))
  30. fmt.Println(oddCells(2,2,[][]int{{1,1},{0,0}}))
  31. }

image.png