1. 题意

有一个股价变化图,你可以在一天买入,在未来一天卖出。

求通过这样一次操作的最大获利。

2. 题解

2.1 枚举

直接枚举,买入卖出的时间,肯定会超时啦~

时间复杂度为O(n2)O(n^2)O(n2)
空间复杂度为O(1)O(1)O(1)

class Solution {
public:int maxProfit(vector<int>& prices) {int ans = 0;int n = prices.size();for (int i = 0;i < n;++i) {for(int j = i + 1;j < n; ++j) {ans = max(ans, prices[j] - prices[i]);}}return ans;}
};
2.2 贪心

我们不难想到,我们每次卖股票的时候,只需要买入当前股票之前最低股份的股票就可以了!因此我们可以边统计最低股价,一边计算差值的最大值。

class Solution {
public:int maxProfit(vector<int>& prices) {int n = prices.size();int ans = 0;int mn = prices[0];for (int i = 1; i < n; ++i) {ans = max(prices[i] - mn, ans);mn  = min(mn, prices[i]);}return ans;}
};
2.3 动态规划

动态规划的思路和贪心的感觉差不多,也不知道这算不算动态规划~

我们用dp[i]dp[i]dp[i]表示卖出的股票是prices[i]prices[i]prices[i]时的最大差值。

因此ans=max⁡{dp[i]∣1≤i≤prices.size()−1}ans=\max \left\{dp[i]\ \Big |\ 1\le i \le prices.size()-1 \right\}ans=max{dp[i]  1iprices.size()1}

同样对于dp[i]dp[i]dp[i],我们需要知道iii之前的最小股份,所以最终代码跟

贪心差不多?空间优化完后,代码估计就跟贪心一样,就不写了。

class Solution {
public:int maxProfit(vector<int>& prices) {int n   = prices.size();int ans = 0;vector<int> dp(n + 1, 0);int mn = prices[0];for (int i = 0;i < n; ++i) {dp[i + 1] = max( dp[i], prices[i] - mn);mn = min( prices[i], mn);}return dp[n];}
};
2.4 差分+动态规划

这个题目跟lc53 最大子数组和, 是相互变形的关系。

其实也就是差分和前缀和的关系。

lc53可以通过前缀和转换成这个问题,当然这个问题也可以通过差分变成

最大子数组和。贴个代码吧,也懒得再解释了OvO

class Solution {
public:int maxProfit(vector<int>& prices) {adjacent_difference( prices.begin(), prices.end(), prices.begin());prices[0] = 0;int ans = 0;int pre = 0;for (auto v: prices) {pre += v;ans = max( pre, ans);if (pre < 0)pre = 0;}return ans;}
};

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

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

相关文章

ToBToC的定义与区别

B 端和 C 端主要是从产品所面向的用户群体角度来区分的&#xff0c;B 端指的是企业用户&#xff08;Business&#xff09;&#xff0c;C 端指的是个人消费者&#xff08;Consumer&#xff09;&#xff0c;它们在多个方面存在明显区别&#xff0c;具体如下&#xff1a;用户特征B…

Python 程序设计讲义(8):Python 的基本数据类型——浮点数

Python 程序设计讲义&#xff08;8&#xff09;&#xff1a;Python 的基本数据类型——浮点数 目录Python 程序设计讲义&#xff08;8&#xff09;&#xff1a;Python 的基本数据类型——浮点数一、浮点数的表示形式1、小数形式2、指数形式二、浮点数的精确度浮点数也称小数&am…

MCP客户端架构与实施

前言:从模型到生产力 — MCP的战略价值 在过去的一年里,我们团队见证了大型语言模型(LLM)从技术奇迹向企业核心生产力工具的演变。然而,一个孤立的LLM无法解决实际的业务问题。真正的价值释放,源于将模型的认知能力与企业现有的数据、API及工作流进行无缝、安全、可扩展…

白盒测试核心覆盖率标准详解文档

白盒测试核心覆盖率标准详解文档 1. 什么是白盒测试与覆盖率&#xff1f; 白盒测试&#xff08;White-box Testing&#xff09;&#xff0c;又称结构测试或逻辑驱动测试&#xff0c;是一种测试方法&#xff0c;测试人员能够访问并了解被测软件的内部结构、代码和实现逻辑。测试…

顺丰面试提到的一个算法题

顺丰面试提到的一个算法题面试过程中大脑空白&#xff0c;睡了一觉后突然想明白了 原理非常简单就是根据数组中元素的值对值对应的索引进行排序 哎&#xff0c;&#xff0c;&#xff0c;&#xff0c;具体看以下代码吧[使用 Java 17 中 Stream 实现] 最好别用 CSDN 提供的在线运…

ChatGPT Agent深度解析:告别单纯问答,一个指令搞定复杂任务?

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录一、什么是ChatGPT Agent&#xff1f;从"客服"到"秘书"的华丽转…

位运算在算法竞赛中的应用(基于C++语言)_位运算优化

在C算法竞赛中&#xff0c;位运算优化是一种非常重要的技巧&#xff0c;因为它可以显著提高算法的效率。以下是一些常见的位运算优化方法及其在各种算法中的应用示例&#xff1a; 常见的位运算优化 1&#xff09;位与运算 &&#xff1a; 用途&#xff1a;用于检查某个位是否…

SpringBoot 使用Rabbitmq

1.Springboot默认MQ支持rabbitmq或者kafka maven引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>propertis添加配置 # spring.rabbitmq.host192.168…

C++核心编程学习4--类和对象--封装

C面向对象有三大特性&#xff1a;封装、继承和多态。 封装 将属性和行为作为一个整体。将属性和行为加以权限控制。 例子1&#xff1a;设计一个圆类 #include <iostream> using namespace std;// 设计一个圆类&#xff0c;求圆的周长 // 圆周率&#xff1a;3.14 const do…

AC身份认证实验之AAA服务器

一、实验背景某公司需要在企业的公司网络出口使用上网行为管理设备&#xff0c;以审计管理局域网的所有设备&#xff0c;同时&#xff0c;局域网内的所有设备都将上网行为代理上网&#xff0c;但是发生过访客外传一些非法信息&#xff0c;所以需要对外来人员进行实名认证&#…

数组算法之【数组中第K个最大元素】

目录 LeetCode-215题 LeetCode-215题 给定整数数组nums和整数k&#xff0c;返回数组中第k个最大元素 public class Solution {/*** 这里是基于小顶堆这种数据结构来实现的*/public int findKthLargest(int[] nums, int k) {// 实例化一个小顶堆MinHeap minHeap new MinHeap…

高亮匹配关键词样式highLightMatchString、replaceHTMLChar

replaceHTMLChar: s > s.toString().replace(/</g, <).replace(/>/g, >),// 高亮匹配关键词样式----------------------------------------highLightMatchString(originStr, matchStr, customClass ) {matchStr && (matchStr matchStr.replace(/[.*?…

HUAWEI Pura80系列机型参数对比

类别HUAWEI Pura80 UltraHUAWEI Pura80 ProHUAWEI Pura80 ProHUAWEI Pura80建议零售价&#xffe5;9999起&#xffe5;7999起&#xffe5;6499起&#xffe5;4699起颜色鎏光金、鎏光黑釉红、釉青、釉白、釉黑釉金、釉白、釉黑丝绒金、丝绒绿、丝绒白、丝绒黑外观材质设计光芒耀…

使用 PyTorch 的 torchvision 库加载 CIFAR-10 数据集

CIFAR-10是一个更接近普适物体的彩色图像数据集。CIFAR-10 是由Hinton 的学生Alex Krizhevsky 和Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含10 个类别的RGB 彩色图片&#xff1a;飞机&#xff08; airplane &#xff09;、汽车&#xff08; automobile …

蓝桥杯51单片机

这是我备考省赛的时候总结的错误点和创新点那个时候是用来提醒自己的&#xff0c;现在分享给你们看^_^一考点二注意点记得初始化&#xff39;&#xff14;&#xff0c;&#xff39;&#xff15;&#xff0c;&#xff39;&#xff16;&#xff0c;&#xff39;&#xff17;&…

【2025/07/23】GitHub 今日热门项目

GitHub 今日热门项目 &#x1f680; 每日精选优质开源项目 | 发现优质开源项目&#xff0c;跟上技术发展趋势 &#x1f4cb; 报告概览 &#x1f4ca; 统计项&#x1f4c8; 数值&#x1f4dd; 说明&#x1f4c5; 报告日期2025-07-23 (周三)GitHub Trending 每日快照&#x1f55…

【生成式AI導論 2024】第12講:淺談檢定大型語言模型能力的各種方式 学习记录

跟标准答案做对比看是否正确 选择题是不是正确 MMLU massive multitask Language Understanding MT-bench 使用语言模型来评分 还有其他任务的对比,也有特别刁钻的问题 阅读长文的能力 grep kamradt 大海捞针

嵌入式 Qt 开发:实现开机 Logo 和无操作自动锁屏

在嵌入式设备开发中&#xff0c;为设备添加开机 Logo 和无操作自动锁屏功能是提升用户体验的重要环节。本文将详细介绍如何在 Qt 嵌入式项目中实现这两个功能。我们将使用 Qt 5/6 和 Linux 环境&#xff0c;确保代码的可移植性和通用性。项目结构为了实现这两个功能&#xff0c…

【AI智能体】Dify 开发与集成MCP服务实战操作详解

目录 一、前言 二、Dify 介绍 2.1 Dify是什么 2.2 MCP 介绍 2.2.1 什么是MCP 2.2.2 MCP核心特性 2.3 Dify中开发与使用MCP介绍 2.3.1 MCP Server开发与使用 2.4 dify 开发MCP Server优势 三、Dify开发与集成MCP操作过程 3.1 Dify MCP 插件说明 3.2 安装mcp-server插…

django filter按两个属性 去重

在Django中&#xff0c;如果你想基于两个属性去重&#xff0c;可以使用distinct()方法并结合annotate()和Count()来实现。这种方法通常用在查询集中&#xff0c;尤其是在你需要统计基于某些字段的唯一值时。 示例 假设你有一个Person模型&#xff0c;它有两个字段&#xff1a;f…