aret
BAN USERbool isContiguesSubArrayX(const vector<uint> &A, const int X)
{
uint size = A.size();
if(size == 0)
{
if(X == 0) return true;
return false;
}
if(X < 0) return false;
uint bPos = 0, ePos = 0, Sum = A[0];
while(bPos < size && ePos < size)
{
if(Sum == X) return true;
if(Sum < X)
{
if(++ePos >= size) return false;
Sum += A[ePos];
continue;
}
else
{
Sum -= A[bPos++];
if(bPos == ePos)
{
if(A[bPos] == X) return true;
bPos++; ePos++;
Sum = A[bPos];
continue;
}
else if(bPos == ePos+1)
{
ePos++;
Sum = A[bPos];
}
if(Sum == X) return true;
assert(bPos<=ePos);
}
}
return false;
}
- aret August 15, 2016