498. Diagonal Traverse

 1 class Solution {
 2     public int[] findDiagonalOrder(int[][] matrix) {
 3         if(matrix.length == 0) return new int[0];
 4         int row = matrix.length;
 5         int col = matrix[0].length;
 6         int i = 0, j = 0;
 7         List<Integer> list = new ArrayList<>();
 8         int flag = 1;
 9         while(list.size() < row*col){
10            if(i >= 0 && i < row && j >= 0 && j < col){
11                // System.out.println(matrix[i][j]);
12                list.add(matrix[i][j]);
13                if(flag == 1){
14                    i = i-1;
15                    j = j+1;
16                }else{
17                    i = i+1;
18                    j = j-1;
19                }
20            }else if(flag == 1){
21                if(j < col){
22                    i = i+1;
23                }else{
24                    i = i+2;
25                    j = j-1;
26                    
27                }
28                flag = - flag;
29            }else if(flag == -1){
30                if(i >= row){
31                    j = j+2;
32                    i = i-1;
33                }else{
34                    j = j+1;
35                }
36                flag = -flag;
37            }
38         }
39         int[] res = new int[row*col];
40         for(int k = 0; k < res.length; k++){
41             res[k] = list.get(k);
42         }
43         return res;      
44     }
45 }

 

posted @ 2018-11-01 06:34  jasoncool1  阅读(140)  评论(0编辑  收藏  举报