找到要购买的股票价格以获得最大利润?

时间:2018-02-25 17:49:10

标签: java algorithm data-structures

我最近遇到过一个问题。

因为我们会得到一个输入,其中包含该特定时间跨度内股票价格的所有时间跨度。

我们的目标是在所有时间范围内找到并显示最佳股票价格,以便最大化利润。

示例:

输入:

上午9:00 - 上午10:00 - 卢比80

上午9:00 - 上午11:00 - 卢比50

上午10:00 - 上午11:00 - 卢比30

上午10:00 - 13:00 - 卢比90

上午11:00 - 14:00 - 卢比70

中午12:00 - 凌晨14:00 - 卢比40

凌晨14:00-15:00 - 卢比45

输出:

上午9:00 - 上午10:00 - 卢比50

上午10:00 - 上午11:00 - 卢比30

上午11:00 - 凌晨12:00 - 卢比70

早上12:00至上午14:00 - 卢比40

凌晨14:00-15:00 - 卢比45

我试过解决这个问题就像使用DS一样。仅考虑开始时间和其他方式。

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

您可以将输入转换为对象。

Input.java

public class Input {
    // translate time period to list, like "9", "10", "11"
    private ArrayList<String> times = new ArrayList<>(); 
    private Double value;

    public ArrayList<String> getTimes() {

        return times;
    }

    public void setTimes(ArrayList<String> times) {

        this.times = times;
    }

    public Double getValue() {

        return value;
    }

    public void setValue(Double value) {

        this.value = value;
    }
}

使用StockPrice存储值。并将最小的值放在每个元素上。 StockPrice.java

import java.util.HashMap;
import java.util.Map;

public class StockPrice extends HashMap<String, Double> {

    Map<String, Double> values = new HashMap<>();

    @Override
    public Double put(String key, Double value) {
        Double var = values.get(key);
        if ( var == null || var > value ) {
            values.put(key, value);
            return value;
        }

        return var;
    }

    public void put(Input input) {
        for (String time : input.getTimes()) {
            put(time, input.getValue());
        }
    }
}

钥匙就像“9”,“10”,“11”......,价值是最小的股票价格。