Diagonal Traverse问题及解法
来源:互联网 发布:centos 7.2安装选项 编辑:程序博客网 时间:2024/05/18 18:42
问题描述:
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.
Example:
Input:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]Output: [1,2,4,7,5,3,6,8,9]Explanation:
问题分析:
以横纵坐标为准线,将对应的值保存到结果集中去。
过程详见代码:
class Solution {public: vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {vector<int> res;int m = matrix.size();if (!m) return res;int n = matrix[0].size(), flag = 0;// flag = 0表示斜向上,flag = 1表示斜向下int i = 1, j = -1,num = m * n,t = 0;res.resize(num);while (t < num){if (!flag){if (isGood(i - 1, j + 1, m, n)){res[t] = (matrix[--i][++j]);}else{if (j + 1 < n){res[t] = (matrix[i][++j]);}else if (i + 1 < m){res[t] = (matrix[++i][j]);}flag = 1;}}else{if (isGood(i + 1, j - 1, m, n)){res[t] = (matrix[++i][--j]);}else{if (i + 1 < m){res[t] = (matrix[++i][j]);}else if (j + 1 < n){res[t] = (matrix[i][++j]);}flag = 0;}}t++;}return res;}bool isGood(int i, int j, int m ,int n){return i < m && i >= 0 && j < n && j >= 0;}};
阅读全文
0 0
- Diagonal Traverse问题及解法
- Diagonal Traverse
- LeetCode 498. Diagonal Traverse
- 498. Diagonal Traverse
- [leetcode]498. Diagonal Traverse
- 498. Diagonal Traverse
- [LeetCode]498. Diagonal Traverse
- leetcode 498. Diagonal Traverse
- 498.Diagonal Traverse-M
- LeetCode: 498. Diagonal Traverse
- LeetCode笔记:498. Diagonal Traverse
- leetcode_498. Diagonal Traverse ? 待解决
- [leetcode] 498. Diagonal Traverse -- JavaScript 代码
- [每日一题]498. Diagonal Traverse
- [Leetcode] 498. Diagonal Traverse 解题报告
- leetcode 498. Diagonal Traverse 矩阵对角遍历
- Heaters问题及解法
- Permutations问题及解法
- 括号匹配问题
- 数据库基础学习day2
- 第21章:数据库编程
- 利用标准I/O给图片打马赛克
- request内置对象
- Diagonal Traverse问题及解法
- iOS开发中支付宝支付的集成(其实很简单)
- 常见浏览器的兼容问题
- 有关c#通过串口接收机器数据的分析
- Android Api demo系列(18) (Graphics>AlphaBitmap)
- Ruby 代码块及其作用域详解
- 动态规划总结
- python
- 操作系统常见面试和笔试题