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.數組
Given array [3,2,3,1,2]
, return 1
.spa
題意設計
假設有一個數組,它的第i個元素是一支給定的股票在第i天的價格。若是你最多隻容許完成一次交易(例如,一次買賣股票),設計一個算法來找出最大利潤。code
解法一:blog
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 的代碼element
解法二:rem
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 的代碼it