首页 > 试题广场 >

对角线遍历矩阵

[编程题]对角线遍历矩阵
  • 热度指数:1220 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个大小为 n*m 的矩阵,请以对角线遍历并返回遍历结果

数据范围: ,矩阵中的元素满足
示例1

输入

[[1,2,3],[4,5,6],[7,8,9]]

输出

[1,2,4,7,5,3,6,8,9]
示例2

输入

[[1,3],[2,4]]

输出

[1,3,2,4]
package main
import _"fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param mat int整型二维数组 
 * @return int整型一维数组
*/
func diagonalOrder( mat [][]int ) []int {
    n,m:=len(mat),len(mat[0])
    ans:=make([][]int,n+m-1)
    for i:=0;i<n;i++{
        for j:=0;j<m;j++{
            k:=i+j
            if ans[k]==nil{
                ans[k]=[]int{}
            }
            if k%2!=0{
                ans[k]=append(ans[k],mat[i][j])
            }else{
                ans[k]=append([]int{mat[i][j]},ans[k]...)
            }
        }
    }
    res:=[]int{}
    for _,arr:=range ans{
        res=append(res,arr...)
    }
    return res
}

发表于 2023-03-10 20:49:42 回复(0)