Question:

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

If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.

Note that you cannot sell a stock before you buy one.

假设你有一个数组,其中第i个元素是当天第一个给定股票的价格。

如果只允许你最多完成一项交易(即买入一份股票,卖出其中的一份股票),那么设计一个算法来找到最大的利润。

注意在买股票之前不能卖出股票。

Example:

  1. Input: [7,1,5,3,6,4]
  2. Output: 5
  3. Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
  4. Not 7-1 = 6, as selling price needs to be larger than buying price.
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.

Solution:

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    let result = 0;
    for (let i = 0 ; i<prices.length; i++){
        for(let j = i+1 ; j < prices.length; j ++) {
            if(prices[j]-prices[i] > result){
                result = prices[j]-prices[i]
            } 
        }
    }
    return result;
};