这是我寻找可以从股票中获得最大利润的解决方案。
int [] aktiePris = new int [] {10,7,5,8,11,9};是一个数组,其中的索引是股市开盘后的分钟,而值是股票的价格。
例如,aktiePris [60] = 300表示在股市开盘一小时后股票的价值为300。
现在,我的代码返回我可以通过买卖一只股票赚取的最大利润。如果我想多次买卖aktiePris怎么办?我该如何从买卖aktiePris中赚取的可能利润中列出一些?
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class ProfitCalculator {
static int minValue, maxValue, maxDiff;
static Calendar timeMin, timeMax;
static int indeksMinMinut, indeksMaxMinut;
public static void main(String args[]) {
int[] aktiePris = new int[]{10, 7, 5, 8, 11, 9};
int profit = findProfit(aktiePris);
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
timeMin = findTime();
timeMin.add(timeMin.MINUTE, indeksMinMinut);
timeMax = findTime();
timeMax.add(timeMax.MINUTE, indeksMaxMinut);
System.out.println("Best time & price for buying is " + timeFormat.format(timeMin.getTime()) + " for " + minValue + " EUR." + "\n"
+ "Best time & price for selling is " + timeFormat.format(timeMax.getTime()) + " for " + maxValue + " EUR." + "\n"
+ "Profit: " + profit);
}
public static int findProfit(int[] inputArray) {
if (inputArray.length < 1)
return 0;
maxDiff = 0;
minValue = inputArray[0];
maxValue = minValue;
for (int i = 1; i < inputArray.length; i++) {
if (inputArray[i] > maxValue) {
maxValue = inputArray[i];
indeksMaxMinut = i;
int priceDiff = maxValue - minValue;
if (priceDiff > maxDiff) {
maxDiff = priceDiff;
}
} else if (inputArray[i] < minValue) {
minValue = maxValue = inputArray[i];
indeksMinMinut = i;
}
}
return maxDiff;
}
public static Calendar findTime() {
Calendar calendar = Calendar.getInstance();
calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 30);
return calendar;
}
}