左右最值最大差
来源:互联网 发布:windows xp哪个版本好 编辑:程序博客网 时间:2024/04/29 07:46
题目描述
给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?
给定整数数组A和数组的大小n,请返回题目所求的答案。
测试样例:
5
2 7 3 1 1
返回:6
import java.util.*;public class MaxGap { public static void main(String args[]){ Scanner in=new Scanner(System.in); int n=in.nextInt(); int a[]=new int[n]; for(int i=0;i<n;i++){ a[i]=in.nextInt(); } System.out.println(findMaxGap(a,n)); } public static int findMaxGap(int[] a, int n) { int max=0; int a1[],a2[]; ArrayList<Integer> list=new ArrayList<>(); //分割数组 for(int i=0;i<n-1;i++){ a1=new int[i+1]; a2=new int[n-i-1]; for(int j=0,t=0;j<i+1&&t<i+1;j++,t++){ a1[j]=a[t]; } for(int k=0,t=i+1;k<n-i-1&&t<n;t++,k++){ a2[k]=a[t]; } //存入两个数组最大值的最大差 list.add(dis(a1,a2)); } max=list.get(0); for(int i=1;i<list.size();i++){ if(max<list.get(i)){ max=list.get(i); } } return max; } public static int dis(int a1[],int a2[]){ int left=a1[0],right=a2[0]; for(int i=1;i<a1.length;i++){ if(left<a1[i]){ left=a1[i]; } } for(int i=1;i<a2.length;i++){ if(right<a2[i]){ right=a2[i]; } } return Math.abs(left-right); }}
0 0
- 左右最值最大差
- 左右最值最大差
- 左右最值最大差
- 左右最值最大差
- 左右最值最大差
- 左右最值最大差
- 左右最值最大差
- 校招真题-其他-左右最值最大差
- 牛客网刷题笔记--左右最值最大差
- 左右最值最大差(贪心)
- [牛客网-左老师]左右最值最大差
- 数组------最短排序+左右最值最大差+局部最小值位置+子数组最大乘积+多数组中位数
- 数组左右最大值的最大差
- 最大数对差
- 最大子数组差
- 最大子数组差
- 最萌身高差
- 将数组中最大的元素放到数组最中间的位置,然后依次由大到小轮换放到左右两边
- android微信第三方登录2
- genymotion模拟器安装apk
- 安卓listview adapter
- android微信支付
- 树莓派默认用户名和密码
- 左右最值最大差
- 弹性盒模型总结
- 树莓派自启动脚本
- androidstudio 快捷键
- 浏览器访问app
- android自定义View贝赛尔曲线
- 如何知道mysql的实例用户名
- android activity 切换动画
- 网址收藏