阿里编程题是人阅卷还是电脑阅卷
4-15这场笔试题真的脑壳疼,先是以为测试用例要自己写,耽搁了会,然后编辑器又给我出毛病,弄了半天我服了,最后心慌的做,然后list和arr又弄混了,顿时心态炸。
大概题就是给你n个数,然后求这个相邻两个差值最大值 比如说
输入4
3 6 2 9
输出
20 // |3-6|+|6-2|+|2-9|+|9-3| = 20
2 9 3 6
如果有多种情况输出一种情况即可。
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int[] arr = new int[a];
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt();
}
Arrays.sort(arr);
List<Integer> list = new ArrayList<Integer>();
int l=0,r=arr.length-1;
int sum = 0;
for (int i = 0; i < arr.length; i++) {
if(i%2 == 0) {
list.add(arr[l]);
l++;
}else {
list.add(arr[r]);
r--;
}
}
l = 1;
for (int i = 1; i < arr.length; i++) {
sum+=Math.abs(list.get(l)-list.get(l-1)); //这里本来该写 list的 我不知道哪根神经抽了 写的 arr[i] -arr[i-1] 运行半天不对
l++;
}
int a = scanner.nextInt();
int[] arr = new int[a];
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt();
}
Arrays.sort(arr);
List<Integer> list = new ArrayList<Integer>();
int l=0,r=arr.length-1;
int sum = 0;
for (int i = 0; i < arr.length; i++) {
if(i%2 == 0) {
list.add(arr[l]);
l++;
}else {
list.add(arr[r]);
r--;
}
}
l = 1;
for (int i = 1; i < arr.length; i++) {
sum+=Math.abs(list.get(l)-list.get(l-1)); //这里本来该写 list的 我不知道哪根神经抽了 写的 arr[i] -arr[i-1] 运行半天不对
l++;
}
//特殊考虑
sum = sum+Math.abs((list.get(list.size()-1)-list.get(0))); //这里本来该写 list的 我不知道哪根神经抽了 写的 arr[i] -arr[i-1] 运行半天不对
System.out.println(sum);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}
有做过的同学帮忙看看我这样运行看看对吗
#阿里415笔试##阿里巴巴#sum = sum+Math.abs((list.get(list.size()-1)-list.get(0))); //这里本来该写 list的 我不知道哪根神经抽了 写的 arr[i] -arr[i-1] 运行半天不对
System.out.println(sum);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}
有做过的同学帮忙看看我这样运行看看对吗