Итак, вы пытаетесь превратить этот массив
3 4 5 6
4 5 6 7
5 6 7 8
в
4 5 6 6
5 6 7 7
6 7 8 8
, чтобы он в основном «сдвигал» значения влево, но только если новые значениябольше, чем предыдущие.Однако у вашей логики есть недостаток: вы используете в обоих циклах a.length в качестве предела, предполагая, что массив «квадратный», тогда вы правильно игнорируете последний столбец.Однако в массиве 3x4 алгоритм заставляет работать только первые два столбца, а не третий!Вы должны искать реальную длину текущей строки массива, чтобы избежать странных ошибок.Ваш алгоритм может затем стать:
public static int[][] mystry2d(int[][] a){
for(int r = 0; r<a.length; r++){
for(int c=0; c<a[r].length-1;c++){
if(a[r][c+1] > a[r][c]){
a[r][c] = a[r][c+1] ;
}
}
}
return a ;
}
, пожалуйста, также рассмотрите возможность кэширования этого значения, чтобы оно не переоценивалось на каждой итерации