LeetCode 热题 100
文章目录
本文存储我刷题的笔记。
堆
70. 中等-数组中的第K个最大元素
71. 中等-前K个高频元素
72. 困难-数据流中的中位数
贪心算法
73. 简单-买卖股票的最佳时机
我的思路
class Solution {
public:
int maxProfit(vector<int>& prices) {
// 排除特殊情况:只有一天
int len = prices.size();
if(len<=1){
return 0;
}
// 遍历所有所有天数
int p_max{prices[0]}, p_min{prices[0]}, profit{0};
for(int i=1; i<len; i++){
p_min = std::min(p_min, prices[i]); // 更新下限
p_max = std::max(p_min, prices[i]); // 更新当前下限后的上限
profit = std::max(profit, p_max-p_min); // 更新最大利润
}
return profit;
}
};
官方思路一:一次遍历
class Solution {
public:
int maxProfit(vector<int>& prices) {
int minprice = prices[0]; // 以往的最低点
int maxprofit = 0; // 最大利润
// 遍历每一个元素
for (int price: prices) {
maxprofit = max(maxprofit, price - minprice); // 更新最大利润
minprice = min(price, minprice); // 更新以往最低点
}
return maxprofit;
}
};
74. 中等-跳跃游戏
75. 中等-跳跃游戏II
76. 中等-划分字母区间
我的思路
官方思路: