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

力扣 买卖股票的最佳时机

贪心算法典型例题。

题目

做过股票交易的都知道,想获取最大利润,就得从最低点买入,最高点卖出。这题刚好可以用暴力,一个数组中找到最大的数跟最小的数,然后注意一下最小的数在最大的数前面即可。从一个数组中选两个数作比较,可以选用两个for循环。这题用dp同理,不过dp数组存状态是多余的。

时间复杂度: O(n^2),空间复杂度: O(1)。

public class Solution {
    public int maxProfit(int[] prices) {
        int max = 0;
        for (int i = 0; i < prices.length - 1; i++) {
            for (int j = i + 1; j < prices.length; j++) {
                int profit = prices[j] - prices[i];
                if (profit > max) {
                    max = profit;
                }
            }
        }
        return max;
    }
}

不过超时了,可以优化一下,从前往后遍历,每遍历到一个数,即每去到一天时,去存最低价跟最大利润,因为最低价购入可以得到更大利润,最高价直接更新最大利润。

时间复杂度: O(n),空间复杂度: O(1)。

public class Solution {
    public int maxProfit(int[] prices) {

        int pre = prices[0];
        int ans = 0;
        for (int i = 0; i < prices.length; i++) {
           ans = Math.max(ans, prices[i] - pre);
           pre = Math.min(pre, prices[i]);
        }
        return ans;
    }
}

贪心的策略是,每到一个数可存到一个局部最优解,而遍历完后做一次次更新去得到目标值。 

相关文章:

  • ANR小记
  • 记录一次部署PC端网址全过程
  • 电商物流系统方案详解
  • AI改文(小说推文Java版)
  • 【干货分享】Autosar CanIf 模块的应用干货笔记1
  • 智能硬件新时代,EasyRTC开启物联音视频新纪元
  • softgym安装
  • ✨2.快速了解HTML5的标签类型
  • Windows系统安装GPU驱动
  • AutoDock CrankPep or ADCP进行蛋白质多肽对接
  • 网络安全重点总结
  • 智慧校园综合管理平台解决方案
  • Linux配置SSH公钥认证与Jenkins远程登录进行自动发布
  • Ollama 在 LangChain 中的使用
  • Tauri+Trae+Deepseek写几个小游戏
  • 使用 Openpyxl 操作 Excel 文件详解
  • 萃取的实现(三)
  • 【Python】02-Python简介
  • 什么叫不可变数据结构?
  • 宏管理工具之lite-manager
  • 祝贺!苏翊鸣成功解锁“2160”
  • 巴基斯坦首都及邻近城市听到巨大爆炸声
  • 1450亿元!财政部拟发行2025年中央金融机构注资特别国债(二期)
  • 习近平同俄罗斯总统普京茶叙
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 司法部:建立行政执法监督企业联系点,推行行政执法监督员制度