直接暴力拆分成一前一后两个数组,分别求解,可惜超时,暂时还没想到更好的解法,容我再想想。
class Solution:
"""
@param prices: Given an integer array
@return: Maximum profit
"""
def maxProfit(self, prices):
# write your code here
if not prices or len(prices) == 1:
return 0
n = len(prices)
ans = 0
for i in range(n+1):
pre_prices = prices[0:i]
last_prices = prices[i:]
pre_ans = 0
last_ans = 0
if pre_prices:
pre_lowest = pre_prices[0]
if last_prices:
last_lowest = last_prices[0]
for j in range(len(pre_prices)):
pre_ans = max(pre_ans, pre_prices[j] - pre_lowest)
pre_lowest = min(pre_lowest, pre_prices[j])
for j in range(len(last_prices)):
last_ans = max(last_ans, last_prices[j] - last_lowest)
last_lowest = min(last_lowest, last_prices[j])
ans = max(pre_ans + last_ans, ans)
return ans