超过内存限制
class Solution {
public:bool VerifySquenceOfBST(vector<int> sequence) {
if( sequence.size() == 0 )return false;
vector<int> less;
vector<int> more;
int i = 0;
for( ; i < sequence.size() ; i ++ ){
if( sequence[i] < *sequence.end())
less.push_back(sequence[i]);
else break;
}
for( ; i < sequence.size() ; i ++ ){
if( sequence[i] > *sequence.end() )
more.push_back(sequence[i]);
else return false;
}
bool left = false;
bool right = false;
if( !less.empty() )left = VerifySquenceOfBST(less);
if( !more.empty() )right = VerifySquenceOfBST(more);
return left && right;
}
};
改成递归:
class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { if (sequence.size() == 0)return false; bool res = IsBack(sequence,0,sequence.size()-1); return res; } bool IsBack(vector<int> arr , int begin , int end ){ if( end - begin <= 1 )return true; int i = begin; for(; i < end ; i ++ ){ if( arr[i] > arr[end] )break; } int j = i; for( ; j < end ; j ++ ){ if( arr[j] < arr[end] )return false; } bool left = false; bool right = false; if( i > 0 )left = IsBack(arr,begin,i - 1); if( i < arr.size())right = IsBack(arr,i,end - 1); return left && right; } };