在数组中,数目字减去它右边的数字得到一个数对之差,求所有数对之差最大值

在数组中,数字减去它右边的数字得到一个数对之差,求所有数对之差最大值

这是一道动态规划的题目,从左往右遍历数组,使用两个变量,一个变量记录开始值,一个记录结果,则有一下公式:

start=a[0];

start=max(start,a[i]));

result=max(result,start-a[i]);

 

代码如下:

public int findMaxAbs(int[]a)
	{
		int result=0;
		int start=a[0];
		for(int i=1;i<a.length;i++)
		{
			start=max(start,a[i]);
			result=max(result,start-a[i]);
		}
		return result;
	}
	
	
	public int max(int a,int b)
	{
		return a>b?a:b;
	}