//方法一:模拟funcluckyNumbers(matrix [][]int)(ans []int){//每次得到行数组for_, row :=range matrix {//使用 continue 标记 每次触发continue跳转该处
next://跳转后会接着row下一个遍历而不会重新遍历//得到行数组中 下标为j的元素xfor j, x :=range row {//得到行数组中 下标为_的元素y//触发跳转会重置遍历for_, y :=range row {//实现判断所在行的最小值//碰到自己不会满足条件而会接着往下遍历if y < x {//如果不是该行最小值跳到next层做下一次遍历continue next
}}//注意此处是matrix,每次得到行数组for_, r :=range matrix {//实现判断所在列的最大值//碰到自己不会满足条件而会接着往下遍历if r[j]> x {//如果不是该列最大值跳到next层做下一次遍历continue next
}}//至此满足所在行、列分别最小、最大
ans =append(ans, x)}}return}
//方法二:预处理funcluckyNumbers(matrix [][]int)(ans []int){//len(matrix) 确定行数
minRow :=make([]int,len(matrix))//len(matrix[0]) 确定列数
maxCol :=make([]int,len(matrix[0]))//遍历 matrix 得到行数组rowfor i, row :=range matrix {
minRow[i]= row[0]//遍历 行数组row 得到下标为j的行元素xfor j, x :=range row {//得到行的最小值
minRow[i]=min(minRow[i], x)//得到列的最大值
maxCol[j]=max(maxCol[j], x)}}//遍历二维数组的每一个元素for i, row :=range matrix {for j, x :=range row {//满足条件若成立,得到答案 ansif x == minRow[i]&& x == maxCol[j]{
ans =append(ans, x)}}}return}funcmin(a, b int)int{if a > b {return b
}return a
}funcmax(a, b int)int{if b > a {return b
}return a
}