跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 买卖股票的最佳时机
未分類
10 10 月 2020

买卖股票的最佳时机

买卖股票的最佳时机

資深大佬 : zzzrf 3

假设有一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。

→在线评测地址

样例 1

输入: [3, 2, 3, 1, 2] 输出: 1 说明:你可以在第三天买入,第四天卖出,利润是 2 - 1 = 1 

样例 2

输入: [1, 2, 3, 4, 5] 输出: 4 说明:你可以在第 0 天买入,第四天卖出,利润是 5 - 1 = 4 

样例 3

输入: [5, 4, 3, 2, 1] 输出: 0 说明:你可以不进行任何操作然后也得不到任何利润 

算法:贪心

很容易想到的贪心算法。对于每一天的价格,我考虑在那天之前的最低价买入,看看是不是能跟新答案。

  • 我们利用一个单元去保存前缀最小值,或者后缀最大值。以下以前缀最小值 low 为例。
  • 若当前的 prices[i]−low 能更新答案,则更新
  • low=min(prices[i],low) ,继续跟新最小值即可。

复杂度分析

  • 时间复杂度 O(n)
    • 扫描整个数组即可
  • 空间复杂度 O(1)
    • 常数空间

代码

public class Solution {      /**      * @param prices: Given an integer array      * @return: Maximum profit      */      public int maxProfit(int[] prices) {         // write your code here          if (prices == null || prices.length == 0) {             return 0;         }         int minPrice = Integer.MAX_VALUE;  //just remember the smallest price         int maximumProfit = 0;          for (int i : prices) {             minPrice = i < minPrice ? i : minPrice;             maximumProfit = (i - minPrice) > maximumProfit ? i - minPrice : maximumProfit;          }         return maximumProfit;     } } 

题解参考

大佬有話說 (14)

  • 資深大佬 : ungrown

    “最佳”这个概念只有在“可预测”时才有意义
    那么股市是可以预测的吗?
    可以预测还怎么割韭菜?

  • 資深大佬 : carlclone

    @ungrown 别杠了小兄弟,对身体不好

  • 資深大佬 : cqcsdzmt

    @carlclone 一说得很有道理呀,到底是你杠还是别人杠

  • 資深大佬 : zhulang

    @carlclone 一说的对 最佳一般都是事后才知道的

  • 資深大佬 : cmdOptionKana

    @carlclone 意见不同就是杠?

  • 資深大佬 : carlclone

    @zhulang 数组都给你了不是事后?谁让你预测了,nt

  • 資深大佬 : zxCoder

    @ungrown 这不是程序设计题目吗。。。

  • 資深大佬 : AmrtaShiva

    这是一个伪命题 所谓的最佳 都是一些马后炮 趋势走出来了 价格看到了 才去分析 股市 和资本投机 是难于预测的 这要结合所谓的盘感 而盘感这东西和人的综合素质又关联在一起 总的来说 市场交易人员越多 规律越明显 被人为操控的可能性越小 比如 外汇市场 国内的股市 呵呵

  • 資深大佬 : ungrown

    @zxCoder #7 草了,关键误解的还不止我一个……

  • 資深大佬 : zxCoder

    @ungrown 就是你带歪的。。。

  • 資深大佬 : xrr2016

    前面的在说啥呢,这不是 leetcode 上的一道算法题嘛

  • 主 資深大佬 : zzzrf

    本身是一道题目的题解分享,但还是十分感谢大家的讨论

  • 資深大佬 : lokya

    没进来以前 我以为是股票买卖分享 进来后 我发现是我刷过的题 告辞

  • 資深大佬 : shiny

    粗看以为是讨论股票的帖子,细看以为是技术讨论帖,再睁大狗眼发现是推广帖

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具