import java.util.Arrays;

import java.util.Scanner;

public class ReturnArrayTest {

public static void main(String[] args) {

//System.out.println("请输入数据的数量");

Scanner sc=new Scanner(System.in);

int num=sc.nextInt();

//System.out.println("输入数据,中间用空格隔开");

int[] numberArray=new int[num];

for (int i = 0; i < numberArray.length; i++) {

numberArray[i]=sc.nextInt();

}

//把每一个位置需要变换的次数组成一个数组

int[] needSteps=new int[num/2];

for (int j = 0,k=num-1; (k-j)>=1; j++,k--) {

needSteps[j]=numberArray[k]-numberArray[j];

}

//System.out.println(Arrays.toString(needSteps));

//寻找最优解

int sum=0;

for (int p = 0; p < needSteps.length-1; ) {

//后比前大且为同号为正数//前比后大且都为同号负号

if((needSteps[p+1]>=needSteps[p]&&needSteps[p]>=0&&needSteps[p+1]>=0)||(needSteps[p+1]<=needSteps[p]&&needSteps[p]<=0&&needSteps[p+1]<=0))

{

sum+=Math.abs(needSteps[p+1]);

p++;

p++;

if(p==needSteps.length-1)

{

sum+=needSteps[needSteps.length-1];

}

}

//后比前大且为同号为负数//前比后大且都为同号正号

else if ((needSteps[p+1]>=needSteps[p]&&needSteps[p]<=0&&needSteps[p+1]<=0)||(needSteps[p+1]<=needSteps[p]&&needSteps[p]>=0&&needSteps[p+1]>=0)) {

sum+=Math.abs(needSteps[p]);

p++;

p++;

if(p==needSteps.length-1)

{

sum+=needSteps[needSteps.length-1];

}

}

//如果为异号直接取前面数字需要的次数

else if ((needSteps[p]>0&&needSteps[p+1]<0)||(needSteps[p]<0&&needSteps[p+1]>0)) {

sum+=Math.abs(needSteps[p]);

p++;

}

}

System.out.println(sum);

}

}

Logo

集算法之大成!助力oier实现梦想!

更多推荐