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

leetcode hot100【 LeetCode 121.买卖股票的最佳时机】java实现

LeetCode 121.买卖股票的最佳时机

题目描述

给定一个数组 prices,其中 prices[i] 表示第 i 天的股票价格。你可以无限次地买卖股票,你想要最大化利润。请你找出最多能赚取的利润。

示例 1:

输入: prices = [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 获得利润 4。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 获得利润 3。

示例 2:

输入: prices = [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 5)的时候卖出, 获得利润 4。

示例 3:

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

Java 实现代码

class Solution {
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length == 0) {
            return 0;
        }

        int minPrice = Integer.MAX_VALUE;
        int maxProfit = 0;

        for (int price : prices) {
            // 更新最低买入价
            if (price < minPrice) {
                minPrice = price;
            } else {
                // 计算当前利润并更新最大利润
                maxProfit = Math.max(maxProfit, price - minPrice);
            }
        }

        return maxProfit;
    }
}

解题思路

我们需要找到一个最小买入价和它之后出现的最大卖出价,使得两者之间的差值(利润)最大。 可以通过一次遍历来实现,维护以下变量:

  • minPrice:记录当前的最低买入价。
  • maxProfit:记录当前的最大利润。 在遍历数组时,不断更新 minPricemaxProfit 即可

复杂度分析

  • 时间复杂度: 遍历一次 prices 数组,时间复杂度为 O(n),n 是数组的长度。

  • 空间复杂度: 只使用了常数空间来存储 minPricemaxProfit,因此空间复杂度为 O(1)


http://www.kler.cn/a/396576.html

相关文章:

  • 1、使用vscode+eide+stm32cubeMx开发stm32
  • mybatisPlus打印sql配置
  • AlphaFold3中文使用说明
  • 【包教包会】CocosCreator3.x框架——带翻页特效的场景切换
  • apk反编译修改教程系列-----apk应用反编译中AndroidManifest.xml详细代码释义解析 包含各种权限 代码含义【二】
  • nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录
  • uniapp ios app以framwork形式接入sentry
  • 使用--log-file保存pytest的运行日志
  • WP网站如何增加文章/页面的自定义模板
  • Node.Js+Knex+MySQL增删改查的简单示例(Typescript)
  • 猫狗识别之BUG汇总
  • C++编程技巧与规范-类和对象
  • conda 和 pip 的比较
  • 嵌入式面试题练习 - 2024/11/15
  • NVR小程序接入平台/设备EasyNVR多个NVR同时管理设备接入:海康NVR 3.0提示不在线如何处理?
  • C++- 基于多设计模式下的同步异步日志系统
  • 力扣 LeetCode 150. 逆波兰表达式求值(Day5:栈与队列)
  • 第 6 章 - Go 语言 运算符
  • MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能
  • 【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解
  • c++中,头文件包含iostream.h和`<iostream>`的差别
  • 【Flink】-- flink新版本发布:v2.0-preview1
  • Ubuntu24.04 network:0 unclaimed wireless adapter no found
  • DAY110代码审计-PHP框架开发篇ThinkPHP版本缺陷不安全写法路由访问利用链
  • 鸿蒙next 应用重启方案
  • fast-api后端 + fetch 前端流式文字响应