您的位置:首页 > 其它

数组中的最大差值

2016-03-26 21:49 190 查看
有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。给定数组A及它的大小n,请返回最大差值。

解析:贪心思想,时间复杂度为o(n)。设置当前数组中的最小值为min_value。初始化为arr[0],然后依次遍历数组中的每一个元素,当遍历到一个元素时求出当前元素与之前的min_value差值,用该差值和当前最大的差值相比较,如果该差值大于当前最大差值,则更新当前最大差值。然后用该元素和当前最小的元素相比较。如果该元素小于当前最小元素,则更新当前最小元素。
int getDis(vector<int> arr)
{
//当前数组中的最小值
int min_value = arr[0];
//当前数组中的最大差值
int max_dis = 0;
for (int i = 1; i < arr.size(); ++i)
{
if (max_dis < arr[i] - min_value)
{
max_dis = arr[i] - min_value;
}
if (min_value > arr[i])
{
min_value = arr[i];
}
}
return max_dis;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: