卖股票的最佳时机
类似摆动序列,但是比摆动序列简单(摆动序列需要前后的斜率),只需要找到斜率上升的点就可以累加利润了。
int maxProfit(vector<int>& prices) {
int profit = 0;
for(int i = 0; i < prices.size() - 1; i++){
if(prices[i + 1] > prices[i]){ // 找到斜率上升的点,累加利润
profit += (prices[i+1] - prices[i]);
}
}
return profit;
}
跳跃游戏
只需找到每次可以跳过的最大范围,在这个范围内遍历,更新该范围,如果在更新的过程中范围超过了数组的长度,那么可以到达最后,如果更新完毕(即循环结束),还没有到达最后,那么就没有成功。
bool canJump(vector<int>& nums) {
int range = nums[0];
int i;
for(i = 0; i <= range; i++){
if((i + nums[i]) > range) //更新最远的范围
range = i + nums[i];
if(range >= nums.size() - 1) //如果更新后的范围大于数组长度,可以成功。
return true;
}
return false; //如果没有在循环中返回,正常结束循环,则表示没有覆盖
//因此返回false
}