1749.任意子数组和的绝对值的最大值
链接:1749.任意子数组和的绝对值的最大值
难度:Medium
标签:数组、动态规划
简介:请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),并返回该 最大值 。
题解 1 - 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;
}
};
题解 2 - 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
题解 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
}
}