2016蘑菇街编程题:最大间隔
2016-03-30 18:31
218 查看
题目描述
给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?[b]输入描述:[/b]第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。
[b]输出描述:[/b]
输出答案。
[b]输入例子:[/b]
5 1 2 3 7 8
[b]输出例子:[/b]
4 解题 当删除元素在原数组的最大间隔的两个元素时候最大间隔增大,当在其他位置时候,这个最大间隔不变,其他位置的间隔增加,但是在怎么增加也不会超过原始数组的最大间隔 所有删除其中一个元素的最大间隔的最小值就是原始数组的最大间隔
import java.util.Scanner; public class Main{ public static void main(String [] args){ Scanner in = new Scanner(System.in); int n,maxd=0; int[] A; while(in.hasNext()){ n = in.nextInt(); A = new int ; for(int i =0;i<n;i++) A[i] = in.nextInt(); maxd = MaxDistanceMin(A,n); System.out.println(maxd); } } public static int MaxDistanceMin(int [] A,int n){ int maxd = -1; for(int i=1;i<= n -1;i++){ maxd = Math.max(maxd,A[i] - A[i-1]); } return maxd; } }
这样是不是投机取巧了 删除非元素最大间隔的两个元素,可能形成最大间隔 如: 1 3 5 8 11 12 最大间隔:3 删除3,1 5 8 11 12 最大间隔:4 删除5,1 3 8 11 12 最大间隔:5 删除8,1 3 5 11 12 最大间隔:6 删除11,1 3 5 8 12 最大间隔:4 最大间隔最小值是4,上面程序又问题,测试样例对特殊情况没有考虑
import java.util.Scanner; public class Main{ public static void main(String [] args){ Scanner in = new Scanner(System.in); int n,maxd=0; int[] A; while(in.hasNext()){ n = in.nextInt(); A = new int ; for(int i =0;i<n;i++) A[i] = in.nextInt(); maxd = MaxDistanceMin(A,n); System.out.println(maxd); } } public static int MaxDistanceMin(int [] A,int n){ int maxd = -1; int minMaxd = Integer.MAX_VALUE; int [] d = new int[n-1]; // 记录相邻两个元素的间隔 for(int i=1;i<= n -1;i++){ d[i-1] = A[i] - A[i-1]; maxd = Math.max(maxd,d[i-1]);// 求出最大间隔 } // 间隔d 向量元素合并,当大于maxd 的时候选取最小值 for(int i=0;i<d.length-1 ;i++){ int subd = d[i] + d[i+1]; if(subd> maxd){// 新的最大间隔 minMaxd = Math.min(minMaxd,subd); }else{ minMaxd = Math.min(minMaxd,maxd); } } return minMaxd; } }
相关文章推荐
- C++走向远洋——21(项目一,三角形,类)
- Ubuntu中vim添加lua支持
- eclipse中svn版本不兼容问题
- C++第1次实验
- 测测你的编程思想!--大牛必看!
- eclipse(优化10) eclipse中设置作者与日期
- 深入Java集合学习系列:HashMap的实现原理
- java IO类
- delphi string.split 按照任意字符串分割语句
- C++走向远洋——20(项目一,三角形,类)
- JAVA WEB开发之文件上传相关jar包的学习
- phpcms的phpsso与discuz的UCenter的联调时遇到的问题
- 自己用python写的性能专项小脚本原理和使用
- c++实验2
- 如何用python的装饰器定义一个像C++一样的强类型函数
- 基于C++的sprintf函数使用技巧
- C++ primer 练习9.49
- c++第三次上机作业
- 浅析python2x与python3x里的str,unicode,bytes关系
- java多态