本文主要是介绍代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:122.买卖股票的最佳时机II
文章链接:代码随想录
视频链接:LeetCode:122.买卖股票的最佳时机||
题目链接:力扣题目链接
图释:
class Solution {
public:int maxProfit(vector<int>& prices) {// 查看每天的收益情况,从每天都正向获利推到全局最优int result = 0;for(int i=1; i<prices.size(); i++){result += max(prices[i]-prices[i-1], 0);}return result;}
};
题目:55. 跳跃游戏
文章链接:代码随想录
视频链接:LeetCode:55.跳跃游戏
题目链接:力扣题目链接
图释:
class Solution {
public:bool canJump(vector<int>& nums) {// 不考虑跳多少格,只在覆盖范围内遍历,累加覆盖范围是否超过sizeint cul = nums[0];for(int i= 0; i<=cul; i++){ cul = max(i+nums[i], cul); // 取最大值更新覆盖范围if(cul>=nums.size()-1) return true;}return false;}
};
题目:45.跳跃游戏II
文章链接:代码随想录
视频链接:LeetCode:45.跳跃游戏||
题目链接:力扣题目链接
图释:
class Solution {
public:int jump(vector<int>& nums) {int result = 0; // 记录结果int cul = 0; // 当前的覆盖范围int next = 0; // 下一步的覆盖范围for(int i=0; i<nums.size(); i++){// 更新下一步的覆盖范围next = max(i+nums[i], next); // 取最大值if(i==cul){ //抵达当前覆盖位置的最大值if(i!=nums.size()-1){ // 如果没到到达终点result++; //开始走下一步cul = next;if(cul >= nums.size()-1) break; // 可加可不加,不加的话会多走点}else{ // 如果到达终点break;}}}return result;}
};
这篇关于代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!