最大差值

本文介绍了一种求解数组中最大差值的有效算法,通过一次遍历实现O(n)的时间复杂度,避免了传统穷举法O(n²)的效率瓶颈。

有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。

给定数组A及它的大小n,请返回最大差值。

测试样例:
[10,5],2
返回:0

 1 int getDis(vector<int> A, int n) {
 2     
 3     int max = 0;
 4     int min = A[0];
 5     for (vector<int>::iterator it = A.begin(); it != A.end(); it++)
 6     {
 7         if (*it<min)
 8         {
 9             min = *it;
10         }
11         if ((*it-min) > max)
12         {
13             max = *it-min;
14         }
15     }
16     return max;
17 
18 }//时间复杂度为O(n)

常规的朴素穷举法,时间复杂度为O(n2).

转载于:https://www.cnblogs.com/hhboboy/p/5550261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值