LeetCode 121. 买卖股票的最佳时机 C/C++/Python

简介: LeetCode 121. 买卖股票的最佳时机 C/C++/Python

难度简单2477收藏分享切换为英文接收动态反馈

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

示例 1:

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

C语言版

int maxProfit(int* prices, int pricesSize) {
  int i = 0;
  int min_prices = INT_MAX;
  int max_profit = 0;
  for (i = 0; i < pricesSize; i++)
  {
    min_prices = fmin(min_prices, prices[i]);
    max_profit = fmax(max_profit, prices[i] - min_prices);
  }
  return max_profit;
}

C++版

class Solution {
public:
  int maxProfit(vector<int>& prices) {
    int min_prices = INT_MAX; //历史最小价格初始化为无穷大
    int max_profit = 0; //最大利润初始化为0
    for (vector<int>::iterator it = prices.begin(); it != prices.end(); it++)
    {
      min_prices = min(min_prices, *it);
      max_profit = max(max_profit, *it - min_prices);
    }
    return max_profit;
  }
};

Python版

#贪心策略
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        min_prices = max(prices) #min_prices = float("inf") 
        max_profit = 0
        for pc in prices:
            min_prices = min(min_prices, pc) #记录历史最低价格
            max_profit = max(max_profit, pc - min_prices) #更新最大利润,取历史最大利润和当前最大利润的较大者
        return max_profit
#超时
class Solution:
    def maxProfit(self, prices):
        if len(prices) < 2:
            return 0
        dp = list()
        for i in range(1, len(prices)):
            dp.append(prices[i] - min(prices[:i]))
        if max(dp) < 0:
            return 0
        return max(dp)


相关文章
|
5月前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
384 0
|
3月前
|
C++ Python
探索Python与C/C++混合编程的艺术
探索Python与C/C++混合编程的艺术
58 1
WK
|
4月前
|
机器学习/深度学习 Java 程序员
为什么Python比C++慢很多?
Python相较于C++较慢主要体现在:动态类型系统导致运行时需解析类型,增加开销;作为解释型语言,逐行转换字节码的过程延长了执行时间;自动内存管理和垃圾回收机制虽简化操作但也带来了额外负担;全局解释器锁(GIL)限制了多线程性能;尽管Python库方便灵活,但在性能上往往不及C++底层库。然而,Python在某些领域如数据分析、机器学习中,凭借其高级别抽象和简洁语法仍表现出色。选语言需依据具体应用场景和需求综合考量。
WK
108 1
|
4月前
|
数据挖掘 Python
用python的tushare模块分析股票案例(python3经典编程案例)
该文章提供了使用Python的tushare模块分析股票数据的案例,展示了如何获取股票数据以及进行基本的数据分析。
195 0
|
5月前
|
Unix C语言 C++
Python调用C/C++
Python调用C/C++
38 2
|
4月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能股票交易策略
使用Python实现智能股票交易策略
99 0
|
5月前
|
PHP C++ Python
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
105 0
|
5月前
|
算法
leetcode188 买卖股票的最佳时机IV
leetcode188 买卖股票的最佳时机IV
70 0
WK
|
5月前
|
机器学习/深度学习 运维 Java
Python 相对于 C++ 有哪些明显的优势
C++是一种强大且高效的编程语言,被广泛应用在系统软件、游戏开发、嵌入式系统等多个领域。然而Python在某些方面展现出显著优势:Python语法简洁直观,易于学习与使用,提高了代码的可读性和团队协作效率;拥有丰富的第三方库和框架资源,能有效提升开发效率;具备良好的跨平台性,无需大量修改即可适应不同操作系统;
WK
72 0
|
5月前
|
数据采集 数据可视化 数据挖掘
【python】python可口可乐股票历史数据分析与可视化(源码+数据集+论文)【独一无二】
【python】python可口可乐股票历史数据分析与可视化(源码+数据集+论文)【独一无二】