给定一个整数数组,我必须找出任何两个元素之间的最大差异,这样在数组中较小的数字后出现较大的数字。我使用了一个简单的方法,并采用了遇到的最小数量的差异通过保持两件事的轨迹
1.最大差异
2.到目前为止访问的最少数量。
int min_element=arr[0];
int diff=arr[1]-arr[0];
for(i=1;i<n;i++)
{
if(arr[i]-min_element>diff)
diff=arr[i]-min_element;
if(arr[i]<min_element)
min_element=arr[i];
}
return diff;
有没有更好的方法来解决这个问题?
答案 0 :(得分:3)
目前,您的算法是最优的,直到恒定因子。
读取n
整数数组需Ω(n)
。你的算法是O(n)
,所以你很好。