1 身高问题
身高问题
一群人围成一圈,所有人的身高参差不齐,第一行n为总人数,第二行为n个人的身高,要求求出一种方案,能够保证这个组合中两两之间的身高差的最大值是所有方案中最小的。
输入大概是这样的
4
100 150 200 250
输出
100
方案1:先排序,然后从中找出一个最小的值,放在中间,然后依次取比这个最小的值次小的值轮流放在左边右边,左边右边
方案2:等同于先对数组进行排序,然后将奇数位置的数字按照顺序提出来,然后将偶数位置的数字倒序放在奇数数字序列的前面
import java.util.Scanner;
import java.util.Arrays;
class Solution{
public static void main(String[] args){
// 先排序,然后从中找出一个最小的值,放在中间,然后依次取比这个最小的值次小的值轮流放在左边右边,左边右边
// 等同于先对数组进行排序,然后将奇数位置的数字按照顺序提出来,然后将偶数位置的数字倒序放在奇数数字序列的前面
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for(int i = 0;i<n;i++) nums[i] = sc.nextInt();
Arrays.sort(nums);
int res = 0;
for(int i = 0;i<n-2;i++) res = Math.max(res,nums[i+2]-nums[i]);
for(int i = 1;i<n-1;i++) res = Math.max(res,nums[i+1]-nums[i]);
res = Math.max(res,nums[1]-nums[0]);
res = Math.max(res,nums[n-1]-nums[n-2]);
System.out.println(res);
}
}
Saying Less Doing More