目录
思路分析
cpp
class Solution {
public:
vector<int> nums;
bool recur(int l,int r){
if(l>=r)return true;
int i = l;
while(nums[i]<nums[r])i++;
int j = i;
while(nums[i]>nums[r])i++;
return i==r && recur(l,j-1) && recur(j,r-1);
}
bool verifyPostorder(vector<int>& postorder) {
nums = postorder;
return recur(0,nums.size()-1);
}
};
python
class Solution:
def verifyPostorder(self, postorder: List[int]) -> bool:
nums = postorder
def recur(l:int,r:int)->bool:
if l>=r:return True
i = l
while nums[i]<nums[r]:i+=1
j = i
while nums[i]>nums[r]:i+=1
return i==r and recur(l,j-1) and recur(j,r-1)
return recur(0,len(nums)-1)