2018网易校招笔试题之疯狂队列
2017-08-20 23:55
239 查看
[编程题]疯狂队列
小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请计算出这些学生列队的最大可能的疯狂值。小易老师回来一定会气得半死。
时间限制:1秒 空间限制:32768K
输入描述:
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),表示学生的人数
第二行为n个整数h[i](1 ≤ h[i] ≤ 1000),表示每个学生的身高
输出描述:
输出一个整数,表示n个学生列队可以获得的最大的疯狂值。
如样例所示:
当队列排列顺序是: 25-10-40-5-25, 身高差绝对值的总和为15+30+35+20=100。这是最大的疯狂值了。
示例1
输入
输出
思路:
将原数列排好序,先把数列中最大值和最小值取到,然后两个指针分别指向数列中倒数第二个和第二个值,与最大最小值交叉做差,然后指针一次向后,向前,直到中间两个指针的值相等。如果数列的长度为奇数个,则把最后一个值与现在指针指向的大的那个数或者小的那个数做差,取较大的差值加到sum上即可。
代码:
小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请计算出这些学生列队的最大可能的疯狂值。小易老师回来一定会气得半死。
时间限制:1秒 空间限制:32768K
输入描述:
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),表示学生的人数
第二行为n个整数h[i](1 ≤ h[i] ≤ 1000),表示每个学生的身高
输出描述:
输出一个整数,表示n个学生列队可以获得的最大的疯狂值。
如样例所示:
当队列排列顺序是: 25-10-40-5-25, 身高差绝对值的总和为15+30+35+20=100。这是最大的疯狂值了。
示例1
输入
5 5 10 25 40 25
输出
100
思路:
将原数列排好序,先把数列中最大值和最小值取到,然后两个指针分别指向数列中倒数第二个和第二个值,与最大最小值交叉做差,然后指针一次向后,向前,直到中间两个指针的值相等。如果数列的长度为奇数个,则把最后一个值与现在指针指向的大的那个数或者小的那个数做差,取较大的差值加到sum上即可。
代码:
function CrazyQueue(n, Height) { var arrTemp = Height.split(' '); var sum = 0; var maxNum, minNum, index1, index2; for (var i = 0; i < n; i++) { arrTemp[i] = parseInt(arrTemp[i]); } arrTemp.sort(function(a, b) { return a - b; }); if (n == 1) return sum; minNum = arrTemp[0]; maxNum = arrTemp[n - 1]; sum += (maxNum - minNum); index1 = 1; index2 = n - 2; while (index1 < index2) { sum += (maxNum - arrTemp[index1]); sum += (arrTemp[index2] - minNum); maxNum = arrTemp[index2]; minNum = arrTemp[index1]; index1++; index2--; } if (n % 2 == 1) { sum += Math.max(arrTemp[index1] - minNum, maxNum - arrTemp[index1]); } return sum; } var n = readline(); var Height = readline(); print(CrazyQueue(n, Height));
相关文章推荐
- 2018网易校招内推-疯狂队列
- 网易笔试题-疯狂的队列
- 2018京东笔试 疯狂序列 神奇数
- 疯狂队列-网易2018校招内推
- 网易2018校招内推编程题集合:疯狂队列 [python]
- 网易2018校招内推编程题_疯狂队列
- 2018 京东笔试疯狂序列
- 2018网易内推编程题 疯狂队列 C++
- JD2018校招神奇数,疯狂队列
- 2018网易校招前端开发工程师笔试卷讨论
- 2018网易内推编程题 疯狂队列
- 2018网易校招移动安全工程师笔试题
- 2018网易校招笔试题——web前端开发
- 阿里2018秋招模拟笔试Java研发岗试题
- [牛客笔试题] 网易2018实习生题目 牛牛找工作
- 网易2018内推_算法工程师_笔试题_交错01串_C/C++
- 2018网易笔试编程题----重排数列
- 2018科大讯飞Java笔试第一道编程题
- SUHO2018校招笔试
- 搜狐2018笔试题一