非洲用什么网站做采购,wordpress评论首页显示第一,吴桥县网站建设,建站服务网络公司题目
给你一个大小为 m x n 的矩阵 mat #xff0c;请以对角线遍历的顺序#xff0c;用一个数组返回这个矩阵中的所有元素。
示例
输入#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出#xff1a;[1,2,4,7,5,3,6,8,9]
解析
本题目主要考察的就是模拟法#xff0c;首…题目
给你一个大小为 m x n 的矩阵 mat 请以对角线遍历的顺序用一个数组返回这个矩阵中的所有元素。
示例
输入mat [[1,2,3],[4,5,6],[7,8,9]] 输出[1,2,4,7,5,3,6,8,9]
解析
本题目主要考察的就是模拟法首先可以计算得出对角线的个数为mn-1在此基础上对于对角线进行遍历从0开始则第偶数条为从左下到右上第奇数条为从右上到左下根据奇数偶数来确定走什么遍历逻辑。 在遍历的过程中由于边界值并不固定每次处理的时候需要判断起点的横纵坐标值
func findDiagonalOrder(mat [][]int) (ans []int) {m : len(mat)n : len(mat[0])var x, y intfor i : 0; i mn-1; i { // 对角线的个数if i%2 0 {// 偶数从左下到右上if i m {x, y i, 0} else {x, y m-1, i-m1}for x 0 y n {ans append(ans, mat[x][y])x--y}} else {// 奇数从右上到左下if i n {x, y 0, i} else {x, y i-n1, n-1}for x m y 0 {ans append(ans, mat[x][y])xy--}}}return
}