当前位置: 首页 > news >正文

贪心算法:买卖股票的最佳时机II 跳跃游戏 跳跃游戏II

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

  • 思路:
    • 想要获得利润,至少要以两天为一个交易单元,因为两天才会有股价差。
    • 因此可以将最终利润进行分解,如prices[3] - prices[0] = (prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0]),也就是把利润分解为每天为单位的维度,那么就可以很清晰地看出,哪些天有收益,哪些天是亏损,而要获得最大利润,只需要收集所有正利润。
    • 局部最优:收集每天的正利润,全局最优:求得最大利润
    • 时间复杂度:O(n)
    • 空间复杂度:O(1)
class Solution {
public:int maxProfit(vector<int>& prices) {int res = 0;for(int i = 1; i < prices.size(); i++) {if(prices[i] - prices[i - 1] > 0) {//只统计正利润res += prices[i] - prices[i - 1];}// res += max(prices[i] - prices[i - 1], 0);//也可以这样写}return res;}
};


55. 跳跃游戏

  • 思路:
    • 本题关键在于可跳的覆盖范围,即每次取最大的跳跃步数,只要终点在可以跳到的覆盖范围之内,那么就一定能跳到终点
    • 做法:
      • 每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围。i只能在覆盖范围cover内遍历,每移动一个元素,cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。而cover更新时,取cover和新的覆盖范围的较大者。如果 cover 大于等于了终点下标,说明可以到达最后一个位置,直接 return true 。
    • 贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围)。
    • 整体最优解:最后得到整体最大覆盖范围,看是否能到终点
    • 时间复杂度: O(n)
    • 空间复杂度: O(1)
class Solution {
public:bool canJump(vector<int>& nums) {int cover = 0;if(nums.size() == 1) return true;for(int i = 0; i <= cover; i++) {cover = max(i + nums[i], cover);if(cover >= nums.size() - 1) return true;}return false;}
};


参考链接

代码随想录:最买卖股票的佳时机II  跳跃游戏 

http://www.lryc.cn/news/261541.html

相关文章:

  • 音频DAC,ADC,CODEC的选型分析,高性能立体声
  • python 连接SQL server 请用pymssql连接,千万别用pyodbc
  • IntelliJ IDEA 自带HTTP Client接口插件上传文件示例
  • C++中的接口有什么用
  • el-table合并相同数据的单元格
  • Verilog Systemverilog define宏定义
  • 51单片机应用从零开始(十一)·数组函数、指针函数
  • 【PostgreSQL】从零开始:(八)PostgreSQL-数据库PSQL元命令
  • 02 使用Vite创建Vue3项目
  • Shell三剑客:sed(简介)
  • tp连接数据库
  • jmeter,断言:响应断言、Json断言
  • dockerfite创建镜像---INMP+wordpress
  • 服务器数据恢复—raid5热备盘未激活崩溃导致上层oracle数据丢失的数据恢复案例
  • 生产派工自动化:MES系统的关键作用
  • netty-daxin-2(netty常用事件讲解)
  • 使用playbook部署k8s集群
  • Python基础入门第四节,第五节课笔记
  • 基于Java SSM框架实现智能停车场系统项目【项目源码+论文说明】
  • React系列:useEffect的使用
  • Ps:形状工具 - 描边选项
  • C#基础知识 - 变量、常量与数据类型篇
  • Java面向对象思想以及原理以及内存图解
  • Gitbook----基于 Windows 10 系统本地安装配置 Gitbook 编写属于自己的电子书
  • springMVC-Restful风格
  • 【OS】操作系统总复习笔记
  • powerbuilder游标的使⽤
  • docker创建镜像 Dockerfile
  • C++共享和保护——(2)生存期
  • 你好,C++(3)2.1 一个C++程序的自白