数据结构刷题(二十五):122买卖股票的最佳时机 II、55跳跃游戏、45跳跃游戏II
创始人
2024-06-03 22:45:12
0

1.122. 买卖股票的最佳时机 II

思路:贪心。把利润分解为每天为单位的维度,然后收集正利润的区间即可。

局部最优:收集每天的正利润,全局最优:求得最大利润。

// 贪心思路
class Solution {public int maxProfit(int[] prices) {int result = 0;for (int i = 1; i < prices.length; i++) {result += Math.max(prices[i] - prices[i - 1], 0);}return result;}
}

2.55. 跳跃游戏

思路:贪心。将这个问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点!

局部最优解:每次取最大跳跃步数(取最大覆盖范围)。

整体最优解:最后得到整体最大覆盖范围,看是否能到终点。

注意:只需要满足有一个位置能够直接指向最后的下标,且前面的位置可以到达这个位置。

public boolean canJump(int[] nums) {int count = 0;for (int i = 0; i <= count; i++) {// 每移动一个单位,就更新最大覆盖范围。// 注意i + nums[i],必须得有一个位置直接指向最后的下标才能truecount = Math.max(count, i + nums[i]);// 当最大覆盖范围能指向最后一个下标时结束if (count >= nums.length - 1)return true;}return false;
}

3.45. 跳跃游戏 II

思路:贪心。

真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最小步数!

这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。

  • 其中只要下一步的最大覆盖能够覆盖到最后一个下标,则直接返回count+1;

  • 若不能,则走到当前可覆盖的最大范围,count+1,并且更新下一步可覆盖的最大范围。

class Solution {public int jump(int[] nums) {if (nums == null || nums.length == 0 || nums.length == 1) {return 0;}//记录跳跃的次数int count = 0;//当前的覆盖最大区域int curjump = 0;//最大的覆盖区域int nextjump = 0;for (int i = 0; i < nums.length; i++) {//在可覆盖区域内更新最大的覆盖区域nextjump = Math.max(nums[i] + i, nextjump);//说明当前一步,再跳一步就到达了末尾if (nextjump >= nums.length - 1)return (count + 1);//走到当前覆盖的最大区域时,更新下一步可达的最大区域if (i == curjump){count++;curjump = nextjump;}}return count;}
}

相关内容

热门资讯

安卓系统文件占空间,空间管理攻... 亲爱的手机控们,你们有没有遇到过这样的情况:明明手机内存还剩一大截,可就是觉得不够用呢?别急,今天就...
威图总裁安卓系统,奢华手机新篇... 哇塞,你知道吗?威图总裁系列手机最近可是大变身啦!它不仅换上了全新的安卓系统,还让无数手机控们为之疯...
安卓系统怎么封杀后台,技术原理... 手机里的安卓系统,后台应用总是偷偷摸摸地耗电,真是让人头疼!今天,就让我来给你揭秘安卓系统是怎么封杀...
安卓系统 程序未安装,安卓系统... 亲爱的手机控们,你们有没有遇到过这种情况:明明下载了心仪的程序,却被告知“应用程序未安装”?别急,今...
种子视频安卓系统下载,轻松获取... 亲爱的手机控们,你是否在寻找一款能够让你的手机焕发新生的种子视频安卓系统下载呢?没错,就是那种能够让...
安卓系统平板能用多久,安卓系统... 你有没有想过,你的安卓系统平板电脑究竟能用多久呢?这可是个让人好奇的问题,就像问一匹马能跑多远一样,...
安卓系统乱象怎么解决,全面攻略... 你有没有发现,用安卓手机的时候,有时候真的让人头疼得要命!APP乱建文件夹、系统卡顿、广告弹窗……这...
云os系统和安卓,独立与兼容的... 亲爱的读者们,今天我要和你聊聊两个在手机世界里备受关注的操作系统——云OS系统和安卓。它们就像是一对...
安卓手机系统禁止更新,全面解析... 亲爱的手机控们,你们是不是也和我一样,对安卓手机系统更新这件事儿有点儿头疼呢?每次手机提示更新,是不...
安卓系统停在语言设置,个性化您... 亲爱的手机用户们,你们有没有遇到过这样的情况:手机突然停在语言设置界面,让你一脸懵逼,不知道该怎么办...
2021年安卓系统手机,性能与... 你有没有发现,最近手机圈里可是热闹非凡呢!2021年的安卓系统手机,简直就像是一场视觉与科技的盛宴。...
知识库系统 安卓,架构、组件与... 哇,你知道吗?在这个信息爆炸的时代,拥有一款强大的知识库系统,就像是拥有了随身携带的智慧大脑!今天,...
安卓系统手机手表,智能手表选购... 你有没有想过,你的手机和手表之间,其实可以有个更亲密的伙伴关系呢?没错,就是安卓系统手机和智能手表!...
安卓xp系统下载软件,下载与安... 你有没有想过,在小小的手机屏幕上,也能重温那个经典的Windows XP系统呢?没错,就是那个曾经陪...
桌面安卓变苹果系统,安卓手机变... 你知道吗?最近在科技圈里掀起了一股不小的风潮,那就是桌面安卓系统摇身一变,竟然变成了苹果系统!是不是...
召唤抽奖系统安卓送信,一键生成... 你知道吗?现在市面上有一种特别火的召唤抽奖系统,它可是让无数安卓用户都为之疯狂呢!想象只需轻轻一点,...
安卓原生系统 充电模块,技术革... 你有没有发现,现在手机充电速度简直就像赛跑一样,谁快谁就赢了!不过,你知道吗?安卓原生系统里的充电模...
安卓系统网络用于程序,构建高效... 你有没有想过,你的安卓手机里那些可爱的应用程序,其实都是通过网络来“呼吸”的呢?没错,就是那个看不见...
软件杯安卓系统杀死,软件杯如何... 你知道吗?在软件界,有一个盛大的比赛叫做“软件杯大赛”,它可是程序员们展示才华的舞台。而在这个舞台上...
安卓系统如何录入nfc,轻松掌... 你有没有想过,你的安卓手机里那个神秘的NFC功能到底怎么用呢?别急,今天就来给你详细揭秘,让你轻松掌...