static String sort(int[][] sort){ StringBuffer sb = new StringBuffer(); int colNums = sort[0].length; int rowNums = sort.length; int maxLength = colNums + rowNums -1; for(int i=0;i<maxLength; i++){ // left-down to right-top int col = i>(rowNums-1) ? (i-rowNums+1) :0; int row = i>(rowNums-1) ? (rowNums-1) :i; for(int index =0;index < (i+1) ;index++){ int r = row - index; int c = col + index; if(r < 0 || c >(colNums-1)){ break; }else{ sb.append(sort[r][c]).append(","); } } } return sb.toString(); } static String sortN(int[][] sort){ StringBuffer sb = new StringBuffer(); int colNums = sort[0].length; int rowNums = sort.length; int maxLength = colNums + rowNums -1; for(int i=0;i<maxLength; i++){ if(i%2 == 1){ // left-down to right-top int col = i>(rowNums-1) ? (i-rowNums+1) :0; int row = i>(rowNums-1) ? (rowNums-1) :i; for(int index =0;index < (i+1) ;index++){ int r = row - index; int c = col + index; if(r < 0 || c >(colNums-1)){ break; }else{ sb.append(sort[r][c]).append(","); } } }else{ // right-top to left-down int row = i>(colNums-1) ? (i-colNums+1) :0; int col = i>(colNums-1) ? (colNums-1) :i; for(int index = 0;index < (i+1) ; index++){ int r = row + index; int c = col - index; if(c < 0 || r >(rowNums -1)){ break; }else{ sb.append(sort[r][c]).append(","); } } } } return sb.toString(); }