C++代码 upper_bound
class Solution {
public:
vector<int> longestObstacleCourseAtEachPosition(vector<int>& obstacles) {
vector<int> ans,d;
for (int i = 0; i < obstacles.size(); ++i) {
int k = upper_bound(d.begin(), d.end(), obstacles[i]) - d.begin();
if (k == d.size()) {
d.push_back(obstacles[i]);
} else {
d[k] = obstacles[i];
}
ans.push_back(k + 1);
}
return ans;
}
};