【美团】有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值
来源:互联网 发布:初音mmd数据 编辑:程序博客网 时间:2024/04/28 14:59
package com.wt;import java.util.Scanner;/** 题目: 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。 测试样例:[10,5],2 返回:0 思路:1、一次选取数组的每一个元素,然后依次用这个元素后面的数与它做减法,看结果是否比当前最大值大; 2、为了减少比较的次数,选较大的数做减法*/public class MaxData { public static void main(String[] args) { int[] input = getInput(); int[] result = getResult(input); System.out.println("最大值是:"+result[2]+"对应的数组元素:a["+result[1]+"]="+input[result[1]]+ "……a["+result[0]+"]="+input[result[0]]); } //获取键盘输入:包括数组大小和数组的值 public static int[] getInput() { System.out.print("请输入数组大小:"); int size = new Scanner(System.in).nextInt(); String inputString; String[] inputArr; int[] inputNum; while(true) { System.out.println("请输入数组,用空格隔开,输入完成按Enter键:"); inputString = new Scanner(System.in).nextLine(); inputArr = inputString.split(" "); inputNum = new int[inputArr.length]; if(inputArr.length != size) { System.out.println("输入不符,请重新输入"); }else { for(int i = 0;i < inputArr.length; i ++) { inputNum[i] = Integer.parseInt(inputArr[i]); } return inputNum; } } } //获取要求的结果 public static int[] getResult(int[] inputArr) { int current_max = 0; int frontIndex = 0; int backIndex = 0; for (int i = 0; i < inputArr.length; i++) { for(int j = i ; j < inputArr.length - 1; j++) { if(inputArr[j+1] > inputArr[j]) { if(inputArr[j+1] - inputArr[i] > current_max) { current_max = inputArr[j+1] - inputArr[i]; frontIndex = i; backIndex = j + 1; } } } } //返回数组:前后角标和最大值98 return new int[]{frontIndex,backIndex,current_max}; }}
阅读全文
0 0
- 【美团】有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值
- 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。 测试样例: [10,5],2 返回:0
- 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。
- 给定一个含有n个元素的整型数组a,求a中的最大值和最小值。
- 给定正整数b,求最大的整数a,满足a*(a+b) 为完全平方数
- 一个数组a[0...n-1],求a[i]-a[j]的最大值,其中i>j
- 一个数组a[0...n-1],求a[j]-a[i]的最大值,其中i<j
- 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法
- 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]
- 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法
- 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法
- 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法
- 给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串
- 长度为M的数组A,找出位置N,使得A[0]...A[N-1]和A[N]...A[M - 1]的和的乘积为最大。
- 据说是腾讯的面试题:两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];
- 给定一个整数sum, 从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum
- 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];
- 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
- 使用esclipse创建maven项目时,项目显示有红叉
- 【备忘】全网首套Spring Boot视频教程下载带源码
- 最长公共子串(LCS)
- 提高篇——删除指定位置上的元素
- A + B Problem II(大数加法)
- 【美团】有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值
- 关于js中''、0、false、[]和{}等==的判断逻辑
- 个人博客域名迁移说明 www.paincker.com
- extern c 解释
- 提高篇——在指定位置上插入值
- Android2017最新面试题(3-5年经验个人面试经历)
- [TensorFlow 学习笔记-04]卷积函数之tf.nn.conv2d
- C语言教程汇总
- 关于在laravel项目中验证码不显示的问题