leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
1671.cpp (957B)
0 class Solution {
1 public:
2 int minimumMountainRemovals(const vector<int> &nums) const {
3 static int left[1001], right[1001];
4 const int n = size(nums);
5 vector<int> vec;
6 int res = 0;
8 for (int i = 0; i < n; i++) {
9 const auto it = lower_bound(begin(vec), end(vec), nums[i]);
10 left[i] = distance(begin(vec), it);
11 if (it != end(vec))
12 *it = nums[i];
13 else
14 vec.push_back(nums[i]);
15 }
17 vec.clear();
18 for (int i = n - 1; i >= 0; i--) {
19 const auto it = lower_bound(begin(vec), end(vec), nums[i]);
20 right[i] = distance(begin(vec), it);
21 if (it != end(vec))
22 *it = nums[i];
23 else
24 vec.push_back(nums[i]);
26 if (!left[i] || !right[i]) continue;
27 res = max(res, left[i] + right[i]);
28 }
30 return n - res - 1;
31 }
32 };