Asked at Wolverine Trading
Theory: Algorithms Under a Complexity BoundRead the problem, hints and solution here. The editor needs a bigger screen: open this page on a laptop to write and run your code.
Available in Python and C++. You are solving it in C++. Switch to Python
A daily PnL series is a sequence of signed integers. A trading desk wants to know the best run it ever had: the contiguous stretch of days with the largest total PnL.
Implement max_subarray_sum, which returns the maximum sum over all non-empty
contiguous subarrays of values.
long long max_subarray_sum(const std::vector<long long>& values);
max_subarray_sum({-2, 1, -3, 4, -1, 2, 1, -5, 4});
// 6 (the stretch {4, -1, 2, 1})
max_subarray_sum({-3, -1, -7});
// -1 (a subarray must be non-empty; the least-bad single day wins)
1 <= values.size() <= 2000000, and every sum fits in a long long.Only the function above is graded. The variants are the follow-up questions an interviewer asks once you have the sum, and they are what the title refers to. Try them in your head before you look: the Solution tab answers all five.
k days.