列表

详情


NC236. 最大差值

描述

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

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


数据范围: ,数组中的值满足

示例1

输入:

[5,1],2

输出:

0

示例2

输入:

[5,6],2

输出:

1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Rust 解法, 执行用时: 27ms, 内存消耗: 6400KB, 提交时间: 2022-05-06

struct Solution{

}

impl Solution {
    fn new() -> Self {
        Solution{}
    }

    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * 
        * @param A int整型一维数组 
        * @param n int整型 
        * @return int整型
    */
    pub fn getDis(&self, A: Vec<i32>, n: i32) -> i32 {
        let mut pre_min = A[0];
        let mut res = i32::MIN;
        for num in A {
            if num < pre_min {
                pre_min = num;
            } else if num - pre_min > res {
                res = num - pre_min;
            }
        }
        res
    }
}

C++ 解法, 执行用时: 30ms, 内存消耗: 7824KB, 提交时间: 2022-05-08

static const auto io_sync_off = []() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    return nullptr;
}
();

class Solution {
  public:
    int getDis(vector<int>& A, int n) {
        int d[n];
        d[0] = A[0];
        int r = 0;
        for (int i = 1; i < n; ++i) {
            if (A[i] < d[i - 1])
                d[i] = A[i];
            else d[i] = d[i - 1];
        }
        for (int i = 1; i < n; ++i) {
            if (A[i] - d[i] > r)
                r = A[i] - d[i];
        }
        return r;
    }
};

C++ 解法, 执行用时: 31ms, 内存消耗: 7872KB, 提交时间: 2022-04-25

static const auto io_sync_off = []() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    return nullptr;
}
();
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param A int整型vector
     * @param n int整型
     * @return int整型
     */
    int getDis(vector<int>& A, int n) {
        // write code here
        int dp[n];
        dp[0] = A[0];
        int res = 0;
        for (int i = 1; i < n; ++i) {
            if (A[i] < dp[i - 1]) dp[i] = A[i];
            else dp[i] = dp[i - 1];
        }
        for (int i = 1; i < n; ++i) {
            if (A[i] - dp[i] > res) res = A[i] - dp[i];
        }
        return res;
    }
};

C++ 解法, 执行用时: 38ms, 内存消耗: 9920KB, 提交时间: 2022-02-27

static const auto io_sync_off = []()
{
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  return nullptr;
}();
class Solution {
public:
    int getDis(vector<int>& A, int n) {
        int dp[n]; dp[0]=A[0]; int res=0;
        for(int i=1; i<n; ++i){
            if(A[i]<dp[i-1]) dp[i]=A[i];
            else dp[i]=dp[i-1];
        }
        for(int i=1; i<n; ++i){
            if(A[i]-dp[i]>res) res=A[i]-dp[i];
        }
        return res;
    }
};

C 解法, 执行用时: 50ms, 内存消耗: 8044KB, 提交时间: 2022-01-27

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param A int整型一维数组 
 * @param ALen int A数组长度
 * @param n int整型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int getDis(int* A, int ALen, int n ) {
    // write code here
    int max=0,min=A[0];
    for(int i=0;i<n;i++)
    {
        if(min>A[i])
            min=A[i];
        if(max<A[i]-min)
            max=A[i]-min;
    }
    return max;
}

上一题