2023-12-30 买卖股票的最佳时机 II和跳跃游戏以及跳跃游戏 II

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

思路:关键点是每一次利用峰值来计算【画图好理解一点,就是计算陡坡的值】!每一次累加和的最大! 或者可以这样理解,把利润划分为每天的,如假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。此时就是把利润分解为每天为单位的维度,而不是从 0 天到第 3 天整体去考虑!

那么根据 prices 可以得到每天的利润序列:(prices[i] - prices[i - 1])…(prices[1] - prices[0])。

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

在这里插入图片描述

class Solution:def maxProfit(self, prices: List[int]) -> int:# 求峰值的一些问题!关键问题就是找出第一个小值的下标if len(prices) == 1 or len(prices) == 0:return 0min_value = min(prices[0],prices[1])count = 0for i in range(0, len(prices) - 1):if i != 0 and prices[i + 1] < prices[i]:count += prices[i] - min_valuemin_value = prices[i + 1]if min_value < prices[-1]:count += prices[-1] - min_valuereturn count
# 贪心算法
class Solution:def maxProfit(self, prices: List[int]) -> int:result = 0for i in range(1, len(prices)):result += max(prices[i] - prices[i - 1], 0)return result

55. 跳跃游戏

思路:问题的核心是将跳几步转化为每次跳跃能覆盖的最大范围!

贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点

img

class Solution:def canJump(self, nums: List[int]) -> bool:# 进行每次跳跃覆盖的范围if len(nums) == 1:return Trueindex = 0cover = nums[0]while index <= cover:# 更新覆盖范围 只更新比起大的范围cover = max(index + nums[index], cover)index += 1if cover >= len(nums) - 1:return Truereturn False

45. 跳跃游戏 II

思路:问题的核心依旧是找出能覆盖的最大的范围,不过需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖【一轮遍历下来就可以了】

45.跳跃游戏II

class Solution:def jump(self, nums: List[int]) -> int:# 依旧是使用覆盖范围,不过是一步一步慢慢来的if len(nums) == 1:return 0# 当前覆盖的的最大距离cur_distance = 0# 下一步覆盖的最大距离next_distance = 0# 步数res = 0# 需要使用到下标了for i in range(len(nums)):next_distance = max(i + nums[i], next_distance)if i == cur_distance:res += 1# 更新当前的覆盖距离cur_distance = next_distanceif cur_distance >= len(nums) - 1:return resreturn res

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 的controller方法返回值

controller方法返回值 返回ModelAndView 说明&#xff1a;controller方法中定义ModelAndView对象并返回&#xff0c;对象中可添加model数据、指定view 返回字符串 逻辑视图名 说明&#xff1a;controller方法返回字符串可以指定逻辑视图名&#xff0c;通过视图解析器解析为…

2024年最牛家用NAS+虚拟化方案,极低功耗

谈谈个人搭建NAS服务器有哪些需求 我有5台华为服务器、群晖、DX4600、路由器、交换机、小主机等&#xff0c;为了尝试出最牛NAS方案&#xff0c;前后投入了几万元&#xff0c;可谓是发烧友。 听我劝&#xff0c;照着这个方案执行&#xff0c;爽死你。 低功耗。NAS是长期运行的…

golang实现skiplist 跳表

跳表 package mainimport ("errors""math""math/rand" )func main() {// 双向链表///**先理解查找过程Level 3: 1 6Level 2: 1 3 6Level 1: 1 2 3 4 6比如 查找2 ; 从高层往下找;如果查找的值比当前值小 说明没有可查找的值2比1大 往当前…

window的两种监听方式区别

一、window.onmessage window.onmessage 是一个属性&#xff0c;直接赋值为事件处理函数。当使用这个方式时&#xff0c;只能绑定一个事件处理函数&#xff0c;如果后续再次赋值&#xff0c;会覆盖之前的处理函数。如果在同一个页面中只有一个地方需要处理消息&#xff0c;这种…

ELF文件格式解析二

使用objdump命令查看elf文件 objdump -x 查看elf文件所有头部的信息 所有的elf文件。 程序头部&#xff08;Program Header&#xff09;中&#xff0c;都以 PT_PHDR和PT_INTERP先开始。这两个段必须在所有可加载段项目的前面。 从上图中的INTERP段中&#xff0c;可以看到改段…

《GreenPlum系列》GreenPlum详细入门教程02-GreenPlum安装

文章目录 第二章 GreenPlum安装1.Docker创建centos容器1.1 拉取centos7镜像1.2 创建容器1.3 进入容器1.4 容器和服务器免密操作1.4.1 生成密钥1.4.2 拷贝密钥 1.5 安装ssh服务和网络必须应用1.6 容器设置root密码1.6.1 安装passwd应用1.6.2 容器本机root设置密码 1.7 容器本机免…

leetcode双指针问题总结 Python

目录 1. 二分查找 2. 有序数组中寻找两个数和等于某数 3. 两数平方和 4. 翻转字符串中的元音字符 5. 判断是否为回文字符串&#xff08;最多可以删除一个字符&#xff09; 6. 归并两个有序数组 7. 判断链表是否有环 8. 最长子序列 1. 二分查找 从有序数组 nums 中查找…

uniapp获取手机当前信息及应用版本

appVersion 是app端查询的数据信息 appWgtVersion 是浏览器端查询的数据信息 onLoad() {const systemInfo uni.getSystemInfoSync();console.log(systemInfo);// #ifdef H5const uniAppVersion systemInfo.appVersion;// #endif// #ifndef H5const uniAppVersion systemIn…

C++学习笔记——对象的指针

目录 一、对象的指针 二、减少对象的复制开销 三、应用案例 游戏引擎 图像处理库 数据库管理系统 航空航天软件 金融交易系统 四、代码的案例应用 一、对象的指针 是一种常用的技术&#xff0c;用于处理对象的动态分配和管理。使用对象的指针可以实现以下几个方面的功…

无法访问Bing网站 - 解决方案

问题 Bing官方网址&#xff1a;https://www.bing.com/ 电脑无法访问Bing网站&#xff0c;但手机等移动设备可以访问Bing网站&#xff0c;此时可尝试以下方案。 以下方案适用于各种系统&#xff0c;如Win/Linux系统。 解决方案 方案1 修改Bing网址为&#xff1a;https://www4…

JAVA毕业设计632—基于Java+ssm的宠物店商城系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于Javassm的宠物店商城系统(源代码数据库)632 一、系统介绍 本项目分为用户、营养师、管理员三种角色 1、用户&#xff1a; 登录、注册、宠物信息、宠物粮食、宠物用品、宠物疫…

二叉树基础oj练习(单值二叉树、相同的树、二叉树的前序遍历)

讲了这么多数据结构相关的知识(可以看我的数据结构文章专栏): 抓紧刷题巩固一下了 目录 1.单值二叉树 题目描述 思路1 代码1 思路2 代码2 2.相同的树 题目描述 思路 代码 3.二叉树的前序遍历 代码 思路 1.单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCod…

C#进行Web API开发时,遇到的常见问题

当使用C#进行Web API开发时&#xff0c;可能会遇到以下一些常见问题&#xff1a; 跨域请求 由于浏览器的同源策略限制&#xff0c;跨域请求可能会引发问题。解决方法可以使用CORS&#xff08;跨域资源共享&#xff09;来允许从特定的域名或端口访问你的API。 // 添加CORS中间…

influx v2 cli设置influxdb过期策略

目录 背景解法设置config设置buckets找到需要修改的bucket ID更新bucket保留策略 参考资料 背景 最近刚使用influxdb&#xff0c;需要对某个db设置一个过期策略。由于初次使用&#xff0c;对influx client命令行不熟悉&#xff0c;于是在网上找相关的教程&#xff0c;但是搜到…

pycharm社区版配置flask开发环境

新建配置文件&#xff0c;类型选择Shell Script 设置Execute中flask.exe的路径 设置options &#xff1a;--appflask_app.py run --port5000 --debug 设置working 路径 设置环境变量FLASK_APPflask_app.py;FLASK_ENVdevelopment 注意&#xff1a;FLASK_APPflask_app.py和上…

YOLOv8 损失函数改进 | 引入 Shape-IoU 考虑边框形状与尺度的度量

🗝️改进YOLOv8注意力系列一:结合ACmix、Biformer、BAM注意力机制 论文讲解加入代码本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方式,在本文中具有完整的代码和包含多种更有效加入YOLOv8中的yaml结构,读者可以获取到注意力加入的代码和使用经验,总…

Android Studio 最新版本首次下载和安装以及汉化教程【+第二次安装使用教程】

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 前言&#xff1a;本教程详解首次安装和下载最新版本的Android Studio &#xff0c;以及汉化教程。另外详解当第二次下载使用时解决遇到的问题。 目录 1.Android Studio 下载 2.Android Studio 首次…

【Unity】优化 if else 和 Switch Case

优化 if else 和 Switch Case z 大量的if else 和 Switch Case会造成代码冗余且消耗性能&#xff0c;可以借用如下方法优化 使用字典进行优化 方法优化&#xff1a; //注册字典&#xff0c;通过Action作为值&#xff0c;然后进行回调 private Dictionary<int, Action<Cha…

Hadoop之mapreduce参数大全-1

1.设置Map/Reduce任务允许使用的最大虚拟内存大小 mapred.task.maxvmem是MapReduce的一个配置参数&#xff0c;用于指定每个Map/Reduce任务允许使用的最大虚拟内存大小&#xff08;以字节为单位&#xff09;。如果一个任务使用的虚拟内存超过了此参数指定的值&#xff0c;则任…

【云计算】云计算概述

1. 云计算概述 1.1 云计算的定义 美国国家标准与技术研究院(NIST)定义 云计算是一种按使用量付费的模式&#xff0c;这种模式提供可用的、便捷的、按需的网络访问&#xff0c;进入可配置的计算资源共享池(资源包括网络&#xff0c;服务器&#xff0c;存储&#xff0c;应用软件…