class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
int n = points.size();
if(n == 0)
{
return 0;
}
sort(points.begin(),points.end(),[](const auto& a, const auto& b){return a[1]<b[1];});
int pos = points[0][1];
int count = 1;
for(int i = 0; i < n;i++)
{
if(points[i][0] > pos)
{
pos = points[i][1];
++count;
}
}
return count;
}
};
四、划分字母区间(中等)
解题代码
class Solution {
public:
vector<int> partitionLabels(string s) {
int n =s.size();
int last[26] = {0};//用来存放26个字符的end位置
for (int i =0; i<n; i++)
{
last[s[i]-'a'] = i;
}
vector<int> partition;
int start = 0, end = 0;
for(int j = 0; j < n ; j++)
{
end = max(end,last[s[j]-'a']);
if(j==end)
{
partition.push_back(end - start + 1);
start = end + 1;
}
}
return partition;
}
};
五、股票交易最好时间(简单)
解题代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
if(n<2)
{
return 0;
}
int sum = 0;
for(int i = 1; i < n; ++i){
if(prices[i]>prices[i-1])
{
sum += (prices[i] - prices[i-1]);
}
}
return sum;
}
};