找出数组中依序的最大差值方法(非动态规划版)
来源:互联网 发布:乘法口诀8的手指算法 编辑:程序博客网 时间:2024/05/23 15:31
简单版找最大值:
目的:找出一个无序数组中有序的最大差值(即大的数在小的数后面)
思路:直接排序,遇到最小的保存最小的,计算每一个位置与最小值的差值,找出最大差值
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc =new Scanner(System.in);int n=sc.nextInt();int array[] =new int[n];for(int i=0;i<n;i++){array[i]=sc.nextInt();}sc.close();int min=Integer.MAX_VALUE;int max=Integer.MIN_VALUE;for(int i=0;i<n;i++){min=Math.min(min, array[i]);max=Math.max(max,array[i]-min);}System.out.println(max);}
进阶版找最大值
目的:找出一个无序数组中有序的两个最大差值(即数组(0,n)中存在(0,i)与(i,n-1)两段满足两段的最大差值之和是最大的)
思路:利用两个辅助数组分别保存从左到右遍历(0,i)和从右到左遍历(i,n-1)两段的值,再把两段的值相加,找出最大的一个,那个点的i能区分出两个最大差值所在区间
public int calculateMax(int[] prices) {if(prices==null||prices.length<2) return 0; int n=prices.length; int sum=0;int left[] =new int[n];int right[]=new int[n];int min=Integer.MAX_VALUE;int max=Integer.MIN_VALUE;for(int i=0;i<n;i++){min=Math.min(min, prices[i]);max=Math.max(max,prices[i]-min);left[i]=max;}int high=Integer.MIN_VALUE;max=Integer.MIN_VALUE;for(int i=n-1;i>=0;i--){high=Math.max(high, prices[i]);max=Math.max(max,high-prices[i]);right[i]=max;}for(int i=0;i<n;i++){sum=Math.max(sum,left[i]+right[i]);} return sum; }
阅读全文
0 0
- 找出数组中依序的最大差值方法(非动态规划版)
- 最大子数组的求和方法一(非动态规划)
- 动态规划-试题(6)-最大差值
- (动态规划DP)面试题:求数组中两个数的最大差值(只能下标大的减去下标小的)符合无后效性
- 数组元素的最大差值
- 如果给定一个数组arr[0,...N-1],要求找出相邻两个数的最大差值
- House Robber 非负数组,相邻不能相加,求最大的和是多少(动态规划)
- 求最大子数组的和(动态规划法)
- 二维数组最大面积的问题(动态规划)
- 【动态规划】求一维子数组的最大和
- 最大子数组之和(动态规划)
- 动态规划方法求最大子连续数组乘积
- 动态规划 最大子数组
- 【动态规划】求数组最大的子数组连续和
- 动态规划-循环数组的最大子数组和
- 无序数组的相邻最大差值
- 【C++】数组中后前差值最大的值
- 数组中最大的差值-LintCode
- hdu Two Paths 次短路模板 (可往回走)
- lintcode:最长单词
- 【原创】Selenium学习系列之(八)—Maven配置生成测试报告
- A functional example for save and load model from Tensorflow
- 深入理解Java之线程池
- 找出数组中依序的最大差值方法(非动态规划版)
- 广东柏文带你了解化妆品OEM行业的三大核心定位
- x.25,帧中继,RF,以太网,ATM分别是什么
- demo3,函数接收参数并弹出,总结
- 用vue实现简易的音乐webApp
- Java 自动按键,以及cmd脚本调用
- 自定义控件 类型编辑器
- 自动行为操控Steering(八)—路径跟随(单体操控)
- Eclipse中的动态web项目,项目上报错,有红叉,但是展开项目,找不到哪里报错