购买股票,股票价格趋势是一个数组,如下
[2, 3, 5, 6, 1, 9]
题目意思是,第一天一股 2 元,第二天一股 3 元, 第三天一股 5 元, 第四天一股 6 元,第五天一股 1 元,第六天一股 9 元
只允许买入一次, 卖出一次
问哪一天买入,哪一天卖出赚的最多,最多一股赚多少钱?
# Java
package com.example.demo.system; | |
public class Test9 { | |
public static void main(String[] args) { | |
int[] priceArr = {1, 4, 5, 2, 6, 9, 7}; | |
int maxProfit = 0; | |
int buyDay = 0; | |
int sellDay = 0; | |
for(int i=0; i < priceArr.length; i++){ | |
int buyPrice = priceArr[i]; | |
for(int j=i+1; j<priceArr.length; j++){ | |
int sellPrice = priceArr[j]; | |
int currentProfit = sellPrice - buyPrice; | |
if (maxProfit < currentProfit){ | |
maxProfit = currentProfit; | |
buyDay = i+1; | |
sellDay = j+1; | |
} | |
} | |
} | |
System.out.println("第 " + buyDay + " 天购买,"); | |
System.out.println("第 " + sellDay + " 天卖出,"); | |
System.out.println("最大利润每股是:" + maxProfit + " 元!"); | |
} | |
} |
输出:
第 1 天购买,
第 6 天卖出,
最大利润每股是:8 元!
# Python
if __name__ == '__main__': | |
# 第三天买入,第五天卖出,每股可赚 6 元 | |
# 下标对应数组 2,4 | |
price_list = [2, 4, 1, 5, 7, 2] # 模拟每天股价走势 | |
sell_days = len(price_list) | |
max_profit = 0 | |
buy_day = 0 | |
sell_day = 0 | |
for i in range(sell_days): | |
buy_day_price = price_list[i] | |
for j in range(sell_days): | |
sell_day_price = price_list[j] | |
if i < j: | |
current_profit = sell_day_price - buy_day_price | |
if max_profit < current_profit: | |
max_profit = current_profit | |
buy_day = i | |
sell_day = j | |
if max_profit > 0: | |
print(f"建议第 {buy_day + 1} 天购买") | |
print(f"建议第 {sell_day + 1} 天卖出") | |
print(f"最大利润是每股赚:{max_profit}元") | |
else: | |
print("不建议买,都亏") |
输出:
建议第 3 天购买
建议第 5 天卖出
最大利润是每股赚:6元