var findDiagonalOrder = function(matrix) {
var result = [];
var row = matrix.length;
if(row === 0){
return result;
}
var col = matrix[0].length;
var rIndex = 0;
var cIndex = 0;
var m = 0;//almostUseless
while(!(rIndex==row-1 && cIndex==col-1)){
result.push(matrix[rIndex][cIndex]);
if((rIndex+cIndex)%2 === 0){//处于上升行
(rIndex-1<0) ? (cIndex+1>col-1?(rIndex++):(cIndex++)) : (cIndex+1>col-1?(rIndex+1>row-1?m++:rIndex++):(cIndex++,rIndex--));
}else{//处于下降行
(rIndex+1>row-1) ? (cIndex+1>col-1?m++:(cIndex++)) : (cIndex-1<0?(rIndex++):(rIndex++,cIndex--));
}
}
result.push(matrix[row-1][col-1]);
return result;
};
这道题我是采用了连续的三元运算符来进行判断,将整个正方形区域分为了左右上下边界以及中间的部分,通过坐标 rIndex+cIndex
的值来判断当前是出于上升行还是下降行。