概述:
Tom和Jerry都很喜欢吃奶酪,现在有n块奶酪散落在坐标轴上(1<=n<=100000),他们分别在a1,a2,a3…an(1<=ai<=100000,一个点可以有多块奶酪)上,Tom和Jerry分别在1和100000两个点上,他们每走一步需要花费1s,问他们拿到所有的奶酪至少要花费多少时间
输入奶酪数量n,和n个奶酪的坐标
输出一个数,表示他们拿到所有奶酪所用的最短时间
示例1
输入:
4
[350,2000,80000,99999]
输出:
20000
题目地址
49.吃奶酪
题目解题方法有文档解释,文档下载地址为以下
程序员面试宝典
但是官方只有解题思路,没有具体代码,所以这边我就附上我的解题代码,具体思路可以参照上面的解释,不一定完全一样,但是相似。
public int solution(int n, int[] nums) {
int maxLess50000 = 1;
int minLarge50000 = 100000;
for(int i=0;i<n;i++){
if(nums[i]>50000){
minLarge50000 = Math.min(minLarge50000, nums[i]);
} else {
maxLess50000 = Math.max(maxLess50000, nums[i]);
}
}
return Math.max((maxLess50000-1),(100000-minLarge50000));
}