MT1 最大差值

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

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

数据范围: 2<n2105<n21052 < n \le 2*10^5 < n \le 2*10^5,数组中的值满足 0val51080 \le |val| \le 5*10^8

思路

首先要明白题目的意思。

数组的后项-前项,差值为负时记为0

Code

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param A int整型vector 
     * @param n int整型 
     * @return int整型
     */
    int getDis(vector<int>& A, int n) {
        // write code here
        // 假设0位置值最小
        int minNum = A[0];
        // 题目的意思是最小为0
        int ansDiff = 0;
        // 遍历整个数组,找到实际最小的值
        for (int i = 1; i < n; i++) {
            minNum = min(A[i], minNum);
            ansDiff = max(A[i] - minNum, ansDiff);
        }
        return ansDiff;
        
    }
};