力扣算法学习day23-2
122-买卖股票的最佳时机 II
题目
代码实现
class Solution {
public int maxProfit(int[] prices) {
// 局部最优-->总体最优,局部后一天有赚则买,然后第二天卖。总体则最大利润。0ms
int[] change = new int[prices.length];
int sum = 0;
for(int i = 1;i < prices.length;i++){
change[i] = prices[i] - prices[i-1];
}
for(int i = 1;i < change.length;i++){
if(change[i] > 0){
sum += change[i];
}
}
return sum;
}
}
55-跳跃游戏
题目
代码实现
class Solution {
// 直接想到的方法,速度很慢,主要是想复杂了点。 321ms
// public boolean canJump(int[] nums) {
// // 贪心,局部最优,扫描每个坐标,将其能走到的位置设置+1,故走不到
// // 的位置会是0,开头除外,开头需要额外处理。
// int[] maybeCollection = new int[nums.length];
// for(int i = 0;i < nums.length;i++){
// if(i > 0 && maybeCollection[i] == 0){
// return false;
// }
// int value = nums[i];
// int index = i+1;
// while(value > 0 && index < nums.length){
// maybeCollection[index]++;
// index++;
// value--;
// }
// }
// return true;
// }
// 正确贪心,每次到最远距离,看是否能覆盖到终点。 速度 2ms
public boolean canJump(int[] nums) {
int scope = 0;// 覆盖范围
for(int i = 0;i <= scope;i++){
scope = Math.max(i+nums[i],scope);
if(scope >= nums.length-1){
return true;
}
}
return false;
}
}