zoukankan      html  css  js  c++  java
  • Leetcode714.买卖股票的最佳时机

    题目连接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/

    思路:动态规划。设置两个值为own和empty,分别表示第i天手上持有股票和没有股票。第i天手上持有股票时,如果前一天手上持有股票,那么own保持不变;如果前一天没有股票,那么own等于前一天没有持有股票的金额再扣去买了当天股票的价格。第i天手上没有股票时,如果前一天有股票,那么这天就将股票卖出了,empty等于前一天利润加上当天股票价格;如果前一天没有股票,那么empty保持不变

    代码:

    class Solution {
        public int maxProfit(int[] prices, int fee) {
            int own = -prices[0], empty = 0; //第0天,若持有股票,那么利润为own=-prices[i];不持有股票就empty=0;
            for(int i=1; i<prices.length; i++){
                own = Math.max(own, empty - prices[i]);//第i天持有股票时的最大利润
                empty = Math.max(empty, own + prices[i] - fee);//第i天没有持有股票时的最大利润
            }
            return empty;//最后手上一定没有股票
        }
    }
    执行用时:4 ms, 在所有 Java 提交中击败了99.77%的用户
    内存消耗:47.6 MB, 在所有 Java 提交中击败了69.68%的用户
  • 相关阅读:
    天生我材必有用?
    峨眉山徒步之行
    S3C6410 GPIO操作接口
    工作
    奖金
    吝啬的地主
    聪明的小李
    地铁重组
    灵魂分流药剂
    摆渡线路
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14149806.html
Copyright © 2011-2022 走看看