题目链接:https://www.cnblogs.com/aaronwell/p/14448318.html
class Solution {
public:
vector<int> GetBestTimeWindow(int n, const vector<int> &arr) const
{
int left = 0;
int right = 0;
vector<int> d_arr(2*ARR_LEN);
for (int i=0;i<2*ARR_LEN;i++) {
d_arr[i]=arr[i%ARR_LEN];
}
int max_len=0;
int sum = d_arr[0];
int res_l=-1,res_r=-1;
while (left <ARR_LEN && right < 2*ARR_LEN-1) {
if (sum > n) {
if(left==right) {
left++;
right++;
sum=d_arr[1];
} else {
sum-=d_arr[right];
right--;
}
} else {
if (right-left+1 > max_len) {
res_l=left;
res_r=right%ARR_LEN;
max_len = right-left+1;
}
right++;
sum+=d_arr[right];
}
}
return {res_l,res_r};
}
};