题目描述
思路
遍历
遍历所有子数组,计算最大值和最小值的差值并求和。
Java实现
class Solution {
public long subArrayRanges(int[] nums) {
int n = nums.length;
long ans = 0;
for (int i = 0; i < n; i++) {
int minVal = Integer.MAX_VALUE, maxVal = Integer.MIN_VALUE;
for (int j = i; j < n; j++) {
minVal = Math.min(minVal, nums[j]);
maxVal = Math.max(maxVal, nums[j]);
ans += maxVal - minVal;
}
}
return ans;
}
}
Python实现
class Solution:
def subArrayRanges(self, nums: List[int]) -> int:
ans, n = 0, len(nums)
for i in range(n):
minVal, maxVal = inf, -inf
for j in range(i, n):
minVal = min(minVal, nums[j])
maxVal = max(maxVal, nums[j])
ans += maxVal - minVal
return ans