Я думаю, что вы подразумеваете под «переворотом», чтобы сделать рыбу, которая движется слева направо, в другую, которая направлена справа налево. Это означает, что вы эффективно отражаете рыбу вокруг линии x = a, где a - горизонтальная координата средней точки рыбы. В этом случае a = (max (x []) - min (x [])) / 2.
Для каждой точки мы проверяем, находится ли она слева или справа от x = a. Если он слева, мы просто изменим его так, чтобы он теперь находился на том же расстоянии вправо, в противном случае мы изменим его так, чтобы он был на том же расстоянии слева.
Я думаю, что следующий (непроверенный) код будет работать. Я сохраняю все значения в виде целых, поэтому может произойти небольшое искажение. Но должно быть легко настроить код, пока искажение не исчезнет.
int max_x=-1;
int min_x=Integer.MAX_VALUE;
for (int v:x){
max_x=Math.max(max_x,v);
min_x=Math.miN(min_x,v);
}
int mid=(max_x-min_x)/2;
int[] reflected_x=new int[x.length];
for(int i=0;i<x.length;i++){
int diff=Math.abs(x[i]-mid);
if (x[i]<mid) reflected_x[i]=mid+diff;
else reflected_x[i]=mid-diff;
}