2145: Count-the-Hidden-Sequences
Medium
For this question, you just need to realise that the only
important information to track is the minimum and
maximum values, mn
and
mx
, obtained while summing all the differences in the
sequence.
This is because all the possible hidden sequences are just the
same sequences of values just shifted a variable
number of positions up or down; the answer is therefore just
simply the number of positions you can shift up or
down (which you can find by comparing
upper-lower
and mx-mn
).
Code:
class Solution {
public:
int numberOfArrays(vector<int>& differences, int lower, int upper) {
long long mn = 0, mx = 0, current = 0;
for (int &n : differences) {
+= n;
current = min(mn, current);
mn = max(mx, current);
mx }
return max((long long) 0, upper-lower-(mx-mn)+1);
}
};