网站做外链软件,食品包装设计开题报告,价格,动画设计培训提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、买卖股票的最佳时机2二、跳跃游戏三、跳跃游戏2四、K次取反后最大化的数组和 前言
今天是跟着代码随想录刷题的第32天#xff0c;主要是学了买卖股票的最… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、买卖股票的最佳时机2二、跳跃游戏三、跳跃游戏2四、K次取反后最大化的数组和 前言
今天是跟着代码随想录刷题的第32天主要是学了买卖股票的最佳时机2跳跃游戏跳跃游戏2和k次取反后最大化的数组和 一、买卖股票的最佳时机2
思路这道题思路直接秒如果下一个比这个高如果我还没买就赶紧入手如果买了就跳过如果下一个比这个低如果我还没卖就赶紧卖注意这个循环得到最后一个的前一个最后一个得判断如果还没卖就赶紧卖为啥最后一个不用判断高还是低是因为最后一个既然能处于可以卖的情况就说明他一定比倒数第二个还要大这样倒数第二个才不会卖。
class Solution {
public:int maxProfit(vectorint prices) {int a0,result0;int buy0;for(int i0;iprices.size()-1;i){if(prices[i1]prices[i]){if(a0) {buyprices[i];a1;}else continue; }else if(prices[i1]prices[i]){if(a1){resultresultprices[i]-buy;a0;}else continue;}}if(a1) resultresultprices[prices.size()-1]-buy;return result;}};
二、跳跃游戏
思路从第一个开始看范围能不能遍历到最后一个不过需要始终更新最大的范围如果循环完了还不能跳到最后一个就说明永远不能跳到最后一个了。
class Solution {
public:bool canJump(vectorint nums) {int covernums[0];for(int i0;icover;i){covermax(cover,inums[i]);if(covernums.size()-1) return true; }return false;}
};
三、跳跃游戏2
思路跳下一个的时候检查这一个的范围哪一个下一个跳的最远就选这个跳的最远的去跳就可以了注意start要放到循环外面去改。不然会影响循环的参数。
class Solution {
public:int i0;int path0;int start0;int cover0;int next0;int jump(vectorint nums) {if(nums.size()1) return 0;covernums[0];while(nums[start]startnums.size()-1){ path;cover0;for(istart1;istartnums[start];i){if(inums.size()-1nums[i]icover){covernums[i]i;nexti;}}startnext; }path;return path;}
};
四、K次取反后最大化的数组和
思路就是让最小的负数先取反如果取完了再让小的正数取反再求和 代码
class Solution {
public:int largestSumAfterKNegations(vectorint nums, int k) {sort(nums.begin(),nums.end());int fu0,feifu0,result0;int i;for(i0;inums.size();i){if(nums[i]0) fu;}if(kfu){for(i0;inums.size();i){if(ik){resultresult-nums[i];}else resultresultnums[i]; }}if(kfu){for(i0;inums.size();i){if(ifu){nums[i]-nums[i];}}sort(nums.begin(),nums.end());if((k-fu)%21){nums[0]-nums[0]; }for(i0;inums.size();i){resultresultnums[i];}}return result;}
};