excel做注冊網(wǎng)站關鍵詞的優(yōu)化方案
Day32 貪心第二天
LeetCode 122 買賣股票的最佳時機 II
思路真是無比巧妙,把區(qū)間利潤拆成每天的利潤,其實就是算出每天的利潤,然后只取其中的正值即可。
在代碼中計算是否計算加時還與0取最大值,相當于大于0才加入。
class Solution {
public:int maxProfit(vector<int>& prices) {int res=0;for(int i=1;i<prices.size();i++)res+=max(prices[i]-prices[i-1],0);return res;}
};
LeetCode 55.跳躍游戲
本題的關鍵在于不再糾結我們如何跳,而是一直考慮最遠能跳到哪里,也就是跳躍的覆蓋范圍,如果覆蓋范圍大于等于最后一個元素的下標,那就是能跳到,否則就跳不到了。
class Solution {
public:bool canJump(vector<int>& nums) {int cover=0;if(nums.size()==1) return true;for(int i=0;i<=cover;i++){cover=max(cover,i+nums[i]);if(cover>=nums.size()-1)return true;}return false;}
};
LeetCode 45.跳躍游戲II
本題的關鍵在于每次跳躍時都取能讓跳躍覆蓋范圍變得更大的下一跳,而且我們也不用考慮應該怎么跳,只需要增加每一步能擴展的最大范圍即可,只要范圍比大于等于末尾元素的下標,那就成功了。
class Solution {
public:int jump(vector<int>& nums) {if(nums.size()==1) return 0;int cur=0,next=0,res=0;for(int i=0;i<nums.size();i++){next=max(next,nums[i]+i);if(i==cur){if(cur!=nums.size()-1){res++;cur=next;if(cur>=nums.size()-1)break;}else break;}}return res;}
};
接下來是思維的考驗了。