1. 程式人生 > >149. Best Time to Buy and Sell Stock【medium】

149. Best Time to Buy and Sell Stock【medium】

str ech max 給定 apt amp small gpo tran

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

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

Example

Given array [3,2,3,1,2], return 1

.

題意

假設有一個數組,它的第i個元素是一支給定的股票在第i天的價格。如果你最多只允許完成一次交易(例如,一次買賣股票),設計一個算法來找出最大利潤。

解法一:

 1 class Solution {
 2 public:
 3     /**
 4      * @param prices: Given an integer array
 5      * @return: Maximum profit
 6      */
 7     int maxProfit(vector<int> &prices) {
 8         if
(prices.empty()) { 9 return 0; 10 } 11 int i = prices.size() - 1; 12 int ans = 0; 13 int maxp = prices[i]; 14 for (--i; i >= 0; --i){ 15 ans = max(ans, maxp - prices[i]); 16 maxp = max(maxp, prices[i]); 17 }
18 return ans; 19 } 20 };

參考@NineChapter 的代碼

解法二:

 1 public class Solution {
 2     public int maxProfit(int[] prices) {
 3         if (prices == null || prices.length == 0) {
 4             return 0;
 5         }
 6 
 7         int min = Integer.MAX_VALUE;  //just remember the smallest price
 8         int profit = 0;
 9         for (int i : prices) {
10             min = i < min ? i : min;
11             profit = (i - min) > profit ? i - min : profit;
12         }
13 
14         return profit;
15     }
16 }

參考@NineChapter 的代碼

149. Best Time to Buy and Sell Stock【medium】