Every day a leetcode
题目来源:121. 买卖股票的最佳时机
解法1:暴力
代码:
int max(int a,int b)
{
return a>b?a:b;
}
int maxProfit(int* prices, int pricesSize){
int maxProfit=0;
int n=pricesSize;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
maxProfit=max((prices[j]-prices[i]),maxProfit);
}
}
if(maxProfit>0) return maxProfit;
else return 0;
}
结果:

解法2:贪心
一次遍历,更新最低股票价格和最大利润。
代码:
int maxProfit(int* prices, int pricesSize){
int maxProfit=0;
int minPrice=prices[0];
int n=pricesSize;
for(int i=0;i<n;i++)
{
if(prices[i]<minPrice) minPrice=prices[i];
if(prices[i]-minPrice>maxProfit) maxProfit=prices[i]-minPrice;
}
return maxProfit;
}
结果:

本文探讨了两解法解决LeetCode题目121买卖股票的最佳时机:暴力搜索的O(n^2)方法和贪心算法的一次遍历。通过实例展示了两种方法的优劣,并聚焦于高效算法的实现与优化。

被折叠的 条评论
为什么被折叠?



