有效的山脉数组
暴力法
class Solution { public: bool validMountainArray(vector<int>& arr) { if(arr.size() <= 2) return false; int arr_flag = 0; for(int i=1 ;i<arr.size();i++) { if(arr_flag == 0 && arr[i] > arr[i-1]) arr_flag = 1; if(arr_flag == 1 && arr[i] > arr[i-1]) continue; else if(arr_flag == 1 && arr[i] == arr[i-1]) return false; else if(arr_flag == 1 && arr[i] < arr[i-1]) arr_flag += 1; if(arr_flag == 2 && arr[i] < arr[i-1]) continue; else return false; } if(arr_flag == 2) return true; else return false; } };
双指针
class Solution { public: bool validMountainArray(vector<int>& arr) { if(arr.size()<=2) return false; int left = 0; int right = arr.size()-1; while( left<arr.size() && arr[left] < arr[left+1]) left++; while(right > 0 && arr[right] < arr[right-1]) right--; // cout<<left<<' '<<right; if(left == right && left!=0 && right!=arr.size()-1) return true; else return false; } };