Как получить всю возможную прибыль от одной акции? - PullRequest
0 голосов
/ 10 марта 2019

Это мое решение, чтобы найти максимальную прибыль, которую я могу получить от акций.

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;
}
}
...