【LeetCodehot100】:贪心算法:T121:买卖股票最佳时机 T55:跳跃游戏 T45:跳跃游戏2

T121:买卖股票最佳时机

题目要求:给定一个数组 prices ,它的第 i 个元素 pricesi 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

核心思路

  1. 遍历数组
  2. 更新最低价
  3. 计算当前利润
  4. 更新最大差价

代码实现

java 复制代码
int minPrice=Integer.MAX_VALUE;
int maxProfit=0;

for(int price:prices){
//1.获取最小价
minPrice=Math.min(minPrice,price);
//2.计算差价
int profit=price-minPrice;
//3.更新最大利润
maxProfit=Math.max(maxProfit,profit);
}
return maxProfit;

总结

记住思路

  1. 遍历数组
  2. 更新最低价
  3. 计算当前利润
  4. 更新最大差价

T55:跳跃游戏

题目要求:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

题目本质

我们不需要知道具体是怎么跳的,我们只需要知道

我当前最远能跳到哪

核心思路

1.定义一个最远距离:maxReach

用来记录当前最远能达到哪里

2.遍历数组

先更新最远记录maxReach

再判断是否(i>maxReach)

代码实现

java 复制代码
int maxReach=0;

for(int i=0;i<nums.length;i++){
if(i>maxReach){
return false;
}
maxReach=Math.max(maxReach,i+nums[i]);
}
return true;

总结

本质:记录最远能达到是位置是哪,然后根据最远微位置判断是否能达到末尾

T45:跳跃游戏2

题目要求:

给定一个长度为 n 的 0 索引整数数组 nums。初始位置在下标 0。

每个元素 numsi 表示从索引 i 向后跳转的最大长度。换句话说,如果你在索引 i 处,你可以跳转到任意 (i + j) 处:

0 <= j <= numsi 且i + j < n

返回到达 n - 1 的最小跳跃次数。测试用例保证可以到达 n - 1。

核心思路

我们需要三个变量

end:当前这一跳的边界(这一步最多到哪)

maxReach:下一步最远能到哪

steps:步数

1.遍历数组:获取第一跳能包含的范围,在这个范围中找出最大能跳到哪

2.在第一跳的范围中更新最远能达到哪里。知道遍历到(i==end)时,开启第二跳,此时step++;end=maxReach

代码实现

java 复制代码
int end=0;
int maxReach=0;
int step=0;

for(int i=0;i<nums.length-1;i++){
maxReach=Math.max(maxReach,i+nums[i]);

if(i==end){
step++;
end=maxReach;
}
return step;
}

总结

理解核心思路,本题创新点在于maxReach的大小,我们要遍历第一轮跳中所有的maxReach,才是正真的max。当i==end时,代表了要开启下一轮跳,同步更新step,当end=maxReach,就代表了到达终点

相关推荐
UIU1145 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi5 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
秋天的怀念_David7 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
碧海银沙音频科技研究院7 小时前
在PC电脑上用Whisper→Marian算法实现离线语音翻译功能
算法·whisper
niyongsheng8 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
j7~10 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
驱动小百科11 小时前
国产3A游戏《影之刃零》正式发售:售价及电脑配置要求介绍
游戏·影之刃零·影之刃零配置要求·影之刃零下载·影之刃零售价
傅科摆 _ py11 小时前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
Shaoshing12 小时前
LeetCode100 42.接雨水
java·算法·leetcode