LeetCode: 498. Diagonal Traverse
来源:互联网 发布:百度云盘mac低版本 编辑:程序博客网 时间:2024/06/06 02:33
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:
Note:
- The total number of elements of the given matrix will not exceed 10,000.
题意:蛇形打印矩阵。
分析:按照主对角线打印,主对角线的特点是i+j=固定值,而且i和j每次只能变1,因此有:
1)斜向上:i–; j++;
2)斜向下:i++; j–;
注意判断溢出情况。
代码如下:
class Solution { public int[] findDiagonalOrder(int[][] matrix) { if(matrix==null||matrix.length==0) return new int[]{}; int n=matrix.length; int m=matrix[0].length; int[] result=new int[n*m]; int i=0; int j=0; int k=1; for(int index=0;index<n*m;index++){ result[index]=matrix[i][j]; int di,dj; if(k>0){//向上 di=i-1; dj=j+1; } else{//向下 di=i+1; dj=j-1; } if(di>=0&&di<n&&dj>=0&&dj<m)//没有溢出 { i=di; j=dj; } else{ if(k>0){//向上 if(j+1<m)//上溢出,仍然可以向右,右回头 j++; else//右溢出,仍然可以向下,下回头 i++; } else{//向下 if(i+1<n)//左溢出 i++; else//下溢出 j++; } k=k*-1; } } return result; }}
阅读全文
0 0
- LeetCode 498. Diagonal Traverse
- [leetcode]498. Diagonal Traverse
- [LeetCode]498. Diagonal Traverse
- leetcode 498. Diagonal Traverse
- LeetCode: 498. Diagonal Traverse
- LeetCode笔记:498. Diagonal Traverse
- [leetcode] 498. Diagonal Traverse -- JavaScript 代码
- [Leetcode] 498. Diagonal Traverse 解题报告
- leetcode 498. Diagonal Traverse 矩阵对角遍历
- 498. Diagonal Traverse
- 498. Diagonal Traverse
- 498.Diagonal Traverse-M
- Diagonal Traverse
- [每日一题]498. Diagonal Traverse
- Diagonal Traverse问题及解法
- leetcode_498. Diagonal Traverse ? 待解决
- Leetcode BST Preorder Traverse
- Leetcode BST Inorder Traverse
- LeetCode[9]Palindrome Number
- Collections.sort()和Arrays.sort()排序算法选择
- 2017秋招-技术岗-猿辅导-Java开发(2轮)
- 最全Pycharm教程(39)——Pycharm版本控制之本地Git用法
- eclipse不能识别web工程、web工程部署找不到jar包
- LeetCode: 498. Diagonal Traverse
- 分布式大数据存储:向上索引法
- 2985:数字组合(2.6基本算法之动态规划)
- Gym-101490H
- 找字符串中首次出现3次某个字符
- 删除子串
- 原创马踏联营
- leetcode 290.Word Pattern
- include<filename>和#include"filename"的区别