1749.任意子数组和的绝对值的最大值
链接:1749.任意子数组和的绝对值的最大值
难度:Medium
标签:数组、动态规划
简介:请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),并返回该 最大值 。
题解 1 - python
- 编辑时间:2023-08-08
- 执行用时:212ms
- 内存消耗:26.04MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def maxAbsoluteSum(self, nums: List[int]) -> int:
        nmin = nmax = res = 0
        for num in nums:
            nmin, nmax = min(num, nmin + num), max(0, nmax + num)
            res = max(res, max(abs(nmin), abs(nmax)))
        return res
题解 2 - cpp
- 编辑时间:2023-08-08
- 执行用时:76ms
- 内存消耗:39.4MB
- 编程语言:cpp
- 解法介绍:遍历,统计最大值和最小值。
class Solution {
public:
    int maxAbsoluteSum(vector<int>& nums) {
        int nmin = 0, nmax = 0, res = 0;
        for (auto &num : nums) {
            nmin = min(num, nmin + num);
            nmax = max(0, nmax + num);
            res = max(res, max(abs(nmin), abs(nmax)));
        }
        return res;
    }
};
题解 3 - rust
- 编辑时间:2023-08-08
- 执行用时:8ms
- 内存消耗:3.01MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn max_absolute_sum(nums: Vec<i32>) -> i32 {
        let (mut nmin, mut nmax, mut res) = (0, 0, 0);
        for num in nums {
            nmin = num.min(nmin + num);
            nmax = 0.max(nmax + num);
            res = res.max(nmin.abs()).max(nmax.abs())
        }
        res
    }
}