# 0498. Diagonal Traverse ###### tags: `Leetcode` `Medium` `FaceBook` Link: https://leetcode.com/problems/diagonal-traverse/ ## 思路 就模拟一遍就好了 有一点点复杂 **要注意的是从不同的边出去,处理的方式不一样** 是根据边区分的 ## Code ```java= class Solution { public int[] findDiagonalOrder(int[][] mat) { int[] ans = new int[mat.length*mat[0].length]; int m = mat.length; int n = mat[0].length; int r = 0; int c = 0; int idx = 0; int direction = 1; while(true){ ans[idx++] = mat[r][c]; if(r==mat.length-1 && c==mat[0].length-1) break; if(direction == 1){ r -= 1; c += 1; if(r < 0 && c!=mat[0].length){ r = 0; direction = -1; } if(c == mat[0].length){ r += 2; c -= 1; direction = -1; } } else{ r += 1; c -= 1; if(c < 0 && r!=mat.length){ c = 0; direction = 1; } if(r == mat.length){ c += 2; r -= 1; direction = 1; } } } return ans; } } ```