本题通过计算两天之间的价格差可以确定买卖股票是否赔钱,因此将价格差数组中为正的元素都加起来则是买卖股票所赚的最大利润。
具体代码如下:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int profit=0;
for(int i=1;i<prices.size();i++)
{
profit+=max(prices[i]-prices[i-1],0);
}
return profit;
}
};
本题要求是否能从数组的起始位置跳跃到最后一个位置,这需要通过跳跃的覆盖范围来判断,也就是在起始的覆盖范围内不断更新新的最大覆盖范围,如果覆盖范围超过数组长度则返回true,如果遍历完整个数组都无法超过数组长度则返回false。
具体代码如下:
class Solution {
public:
bool canJump(vector<int>& nums) {
int cover=0;
for(int i=0;i<=cover;i++)
{
cover=max(i+nums[i],cover);
if(cover>=nums.size()-1)
{
return true;
}
}
return false;
}
};
本题与上题的不同在于要求最小跳跃次数,在解题过程中要加入对下一步的最大跳跃范围的求解,如果当前跳跃最大范围没有到达数组末尾,则更新为下一步最大跳跃范围并对跳跃步数进行加一操作,如果超过了数组的大小则返回结果。
具体代码如下:
class Solution {
public:
int jump(vector<int>& nums) {
int step=0;
int cur=0;
int next=0;
for(int i=0;i<nums.size();i++)
{
next=max(i+nums[i],next);
if(i==cur)
{
if(cur!=nums.size()-1)
{
cur=next;
step++;
}
if(next>=nums.size()-1)
{
break;
}
}
}
return step;
}
};
本文介绍了LeetCode中的三道题目,涉及股票买卖中的最大利润计算,数组跳跃问题(包括普通跳跃和最小跳跃次数),通过示例代码展示了如何在Python中解决这些问题。
1325

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



