赞
踩
题目描述:
给你一个大小为
m x n
的矩阵mat
,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。示例:
输入: mat = [[1,2,3],[4,5,6],[7,8,9]]
输出: [1,2,4,7,5,3,6,8,9]
#include <iostream> #include <vector> using namespace std; class Solution { public: vector<int> findDiagonalOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.empty()) return res; int row = matrix.size(), col = matrix[0].size(), c = 0, r = 0; for(int i=0;i < row+col-1;i++) { if(i % 2) { c = (i<col) ? i : col-1; r = i - c; while(c >= 0 && r < row) res.push_back(matrix[r++][c--]); } else { r = (i<row) ? i : row-1; c = i - r; while(c < col && r >= 0) res.push_back(matrix[r--][c++]); } } return res; } }; int main() { vector<vector<int>> arr = { {5, 0, 9,11},{2, 4, 8,10},{13, 3, 6, 7},{15,14,12,16} }; Solution solution; vector<int> result = solution.findDiagonalOrder(arr); for(int i=0; i<result.size(); i++){ cout << result[i] << ' '; } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。