zoukankan      html  css  js  c++  java
  • LeetCode -- Best Time to Buy and Sell Stock II

    Question:

    Say you have an array for which the ith element is the price of a given stock on day i.

    Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

    Analysis:

    题目描述:给出一个整数数组,第i个元素表示第i天得股票售价。 设计一个算法得到最大利润,与第一个版本不同的是,这次交易允许多次买卖,但是必须保证在买入股票之前要先卖出。

    思路:开始想是否要用到动态规划的思想,后来发现,这个题目是要将原来的数组划分成一个个的小波峰波谷,而每次波峰与波谷之间的差值都可以作为利润。

    Answer:

    public class Solution {
        public int maxProfit(int[] prices) {
            if(prices.length == 0 || prices.length == 1)
                    return 0;
            int profit = 0;
            for(int i=1; i<prices.length; i++) {
                    int diff = prices[i] - prices[i-1];
                    
                    if(diff > 0) {
                        profit += diff;
                    }
            }
            return profit;
        }
    }
  • 相关阅读:
    网络相关配置
    RestTemplate 工具类以及拦截器配置打印调用日志
    Redis(2)九大数据类型及落地案例
    JUC(7)ThreadLocal
    JUC(5)原子类
    JUC(6)LockSupport
    JUC(4)Volatile
    JUC(3)Java内存模型JMM
    JUC(1)说说Java“锁”事
    JUC(2)线程中断机制
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/4821413.html
Copyright © 2011-2022 走看看