本文介绍: ● 122.买卖股票的最佳时机II● 55. 跳跃游戏● 45.跳跃游戏II。
贪心算法part02
● 122.买卖股票的最佳时机II
● 55. 跳跃游戏
● 45.跳跃游戏II
1.leetcode 122.买卖股票的最佳时机II
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/
class Solution {
public int maxProfit(int[] prices) {
//p[3]-p[0]=p[3]-p[2]+p[2]-p[1]+p[1]-p[0];
//每段都算出来存入数组中(正负数都存进去),只取>0的进行相加
int[] dayPrice=new int[prices.length-1];
int result=0;
for(int i=1;i<prices.length;i++){
dayPrice[i-1]=prices[i]-prices[i-1];
}
for(int i=0;i<dayPrice.length;i++){
if(dayPrice[i]>0){
result+=dayPrice[i];
}
}
return result;
}
}
2.leetcode 55. 跳跃游戏
https://leetcode.cn/problems/jump-game/description/
class Solution {
public boolean canJump(int[] nums) {
//最初位于数组的第一个下标 ,每个元素代表你在该位置可以跳跃的最大长度
//判断你是否能够到达最后一个下标
//我们不去纠结每次跳多少,怎么跳
//而是去看跳了之后能不能把最后一个覆盖到
//对于只有一个元素的数组,//无论如何他都是在最后一个下标了
if(nums.length==1){return true;}
//只能是在我们的股改范围内移动
int cover=0;
for(int i=0;i<=cover;i++){
//cover=i+nums[i];//到达覆盖位置的下标
//再覆盖范围内更新最大覆盖范围
cover=Math.max(i+nums[i],cover);
if(cover>=nums.length-1){
//到达最后位置的下标
return true;
}
}
//都结束了,还没有返回,那就是没有能达到最后一个下标了
return false;
}
}
3.leetcode 45.跳跃游戏II
https://leetcode.cn/problems/jump-game-ii/description/
class Solution {
public int jump(int[] nums) {
//当数组元素只有一个的时候,跳跃到下标为最后一个步数为0
if(nums.length==1){
return 0;
}
//当前覆盖范围的下标
int cur=0;
//下一次覆盖范围的下标
int next=0;
//记录结果
int result=0;
for(int i=0;i<nums.length;i++){
//记录下一次的覆盖范围,每次都记录最大的覆盖范围
next=Math.max(next,i+nums[i]);
//如果当前的下标已经到了当前的覆盖范围了
if(i==cur){
//如果当前覆盖范围不是最后下标的位置
if(cur!=nums.length-1){
//那么就让当前覆盖范围到上面记录的下一次的坐标
cur=next;
//累加步数
result++;
//如果当前覆盖范围大于或者等于数组最后下标位置,那么终止循环
if(cur>=nums.length-1){break;}
}else{
//到了最后一个位置,那么步数也早就更新了
//跳出循环
break;
}
}
}
return result;
}
}
原文地址:https://blog.csdn.net/Belle_Daisy/article/details/135613834
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_58916.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。