@@ -51,50 +51,40 @@ public int[] findDiagonalOrder(int[][] matrix) {
51
51
}
52
52
}
53
53
54
- /*
55
- matrix = new int[][]{
56
- {1, 2, 3},
57
- {4, 5, 6},
58
- {7, 8, 9},
59
- {10, 11, 12},
60
- {13, 14, 15},
61
- };
62
- expected = new int[]{1, 2, 4, 7, 5, 3, 6, 8, 10, 13, 11, 9, 12, 14, 15};
63
- */
64
54
public static class Solutoin2 {
65
55
public int []findDiagonalOrder (int [][]matrix ) {
66
- if (matrix ==null ||matrix .length ==0 ){
67
- return new int [0 ];
56
+ if (matrix ==null ||matrix .length ==0 ) {
57
+ return new int [0 ];
58
+ }
59
+ List <List <Integer >>diagonals =new ArrayList <>();
60
+ int maxRow =matrix .length ;
61
+ int maxCol =matrix [0 ].length ;
62
+ int maxDiagonal =maxRow +maxCol -1 ;
63
+ for (int diagonalIndex =0 ;diagonalIndex <maxDiagonal ;diagonalIndex ++) {
64
+ int curRowIdx = (diagonalIndex <maxCol ) ?0 : (diagonalIndex -maxCol +1 );
65
+ int curColIdx = (diagonalIndex <maxCol ) ?diagonalIndex : (maxCol -1 );
66
+ List <Integer >diagonal =new ArrayList <>();
67
+ while (curRowIdx >=0 &&curRowIdx <maxRow &&curColIdx >=0 &&curColIdx <maxCol ) {
68
+ int diagonalElement =matrix [curRowIdx ][curColIdx ];
69
+ diagonal .add (diagonalElement );
70
+ curRowIdx ++;
71
+ curColIdx --;
72
+ }
73
+ diagonals .add (diagonal );
74
+ }
75
+ int []result =new int [maxRow *maxCol ];
76
+ int resultIdx =0 ;
77
+ for (int i =0 ;i <diagonals .size ();i ++) {
78
+ List <Integer >diagonal =diagonals .get (i );
79
+ if (i %2 ==0 ) {
80
+ Collections .reverse (diagonal );
81
+ }
82
+ for (int j =0 ;j <diagonal .size ();j ++) {
83
+ result [resultIdx ] =diagonal .get (j );
84
+ resultIdx ++;
68
85
}
69
- List <List <Integer >>diagonals =new ArrayList <>();
70
- int maxRow =matrix .length ;
71
- int maxCol =matrix [0 ].length ;
72
- int maxDiagonal =maxRow +maxCol -1 ;
73
- for (int diagonalIndex =0 ;diagonalIndex <maxDiagonal ;diagonalIndex ++) {
74
- int curRowIdx = (diagonalIndex <maxCol ) ?0 : (diagonalIndex -maxCol +1 );
75
- int curColIdx = (diagonalIndex <maxCol ) ?diagonalIndex : (maxCol -1 );
76
- List <Integer >diagonal =new ArrayList <Integer >();
77
- while (curRowIdx >=0 &&curRowIdx <maxRow &&curColIdx >=0 &&curColIdx <maxCol ) {
78
- int diagonalElement =matrix [curRowIdx ][curColIdx ];
79
- diagonal .add (diagonalElement );
80
- curRowIdx ++;
81
- curColIdx --;
82
- }
83
- diagonals .add (diagonal );
84
- }
85
- int []result =new int [maxRow *maxCol ];
86
- int resultIdx =0 ;
87
- for (int i =0 ;i <diagonals .size ();i ++) {
88
- List <Integer >diagonal =diagonals .get (i );
89
- if (i %2 ==0 ) {
90
- Collections .reverse (diagonal );
91
- }
92
- for (int j =0 ;j <diagonal .size ();j ++) {
93
- result [resultIdx ] =diagonal .get (j );
94
- resultIdx ++;
95
- }
96
- }
97
- return result ;
86
+ }
87
+ return result ;
98
88
}
99
89
}
100
90