题目
解题思路
- 首先我们知道的是:这道题是让我们求数目,而不是求出来具体的数组
- 所以说我们并不需要计算每一个数组是多少,只需要知道数组的上下限是多少
- 从0执行一次传入数组differences[],从而储存min和max,求出数组的上下限
- 然后判断是否满足在上下限之间即可
Code
class Solution {
public int numberOfArrays(int[] differences, int lower, int upper) {
long min = 0, max = 0, start = 0;
for (int j = 0; j < differences.length; j++) {
start += differences[j];
min = Math.min(start, min);
max = Math.max(start, max);
}
long count = (min - lower) + (upper - max)+1;
if (count < 0) {
return 0;
}
return (int)count;
}
}
代码运行截图