package cap3 // Ex3 求鞍点数,行上最小,列上最大 func Ex3(matrix [][]int) (int, int, int) { rowMinIdx := map[int]int{} // key: 行索引, value: 最小值所在列 colMaxIdx := map[int]int{} // key: 列索引, value: 最大值所在行 for rowIdx, row := range matrix { rowMinIdx[rowIdx] = 0 for colIdx, currNum := range row { if currNum < row[rowMinIdx[rowIdx]] { rowMinIdx[rowIdx] = colIdx } if _, has := colMaxIdx[colIdx]; !has { colMaxIdx[colIdx] = rowIdx } else if currNum > matrix[colMaxIdx[colIdx]][colIdx] { colMaxIdx[colIdx] = rowIdx } } } for rowIdx, colIdx := range rowMinIdx { if rowIdx == colMaxIdx[colIdx] { return rowIdx, colIdx, matrix[rowIdx][colIdx] } } return -1, -1, 0 }