买卖股票的最佳时机
买卖股票的最佳时机一
- 
问题:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
 - 
解决:
#一次遍历 class Solution: def maxProfit(self , prices ): # write code here minprice = float("inf") maxprofit = 0 for price in prices: minprice = min(price, minprice) maxprofit = max(price - minprice, maxprofit) return maxprofit #时间复杂度O(n) #空间复杂度O(1) #动态规划 class Solution: def maxProfit(self , prices ): # write code here n = len(prices) if n==0: return 0 dp = [0] * n minprice = prices[0] for i in range(1,n): minprice = min(prices[i], minprice) dp[i] = max(dp[i-1],prices[i]-minprice) return dp[-1] #时间复杂度O(n) #空间复杂度O(n) 
买卖股票的最佳时机二
- 
问题:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
 - 
解决:
#贪心算法 class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ if len(prices)<=1:return 0 profit = 0 for i in range(1,len(prices)): temp = prices[i] - prices[i-1] if temp > 0: profit += temp return profit #时间复杂度O(n) #空间复杂度O(1) 
                    
                
                
            
        
浙公网安备 33010602011771号