845. 数组中的最长山脉
class Solution { public: bool confine = false, begin = false; int longestMountain(vector<int>& A) { if (A.size()<3) { return 0; } vector<int>num = A; int ans = 0, left = 0, len = 0; for (int right = 0; right < num.size()-1; right++) { if (!begin) { if (num[right] < num[right + 1]) { len++; left = right; begin = true; } } else { if (!confine) { if (num[right] > num[right + 1]) { confine = true; } else if (num[right] == num[right + 1]) begin = 0; } else { if (num[right] <= num[right + 1]) { confine = 0; begin = 0; ans = max(ans, right - left + 1); right--; } } } } if (begin&&confine) { ans = max(ans, (int)num.size() - left); } return ans; } };
