做法:贪心
时间复杂度: O ( n ) O(n) O(n)
思路
- 这题实际上是在求 m a x ( a [ i ] − a [ j ] ) ( i > = j ) max(a[i]-a[j])(i>=j) max(a[i]−a[j])(i>=j)
- 可利用贪心的思路维护 a [ j ] a[j] a[j]在 i > = j i>=j i>=j范围内最小即可,时间复杂度从 O ( n 2 ) O(n^2) O(n2)将为 O ( n ) O(n) O(n)
代码
class Solution {
public:
/**
*
* @param prices int整型vector
* @return int整型
*/
int maxProfit(vector<int>& prices) {
int ans=0,t=0x3f3f3f3f;
for(auto x:prices){
t=min(x,t);
ans=max(ans,x-t);
}
return ans;
}
};