我最近遇到过一个问题。
因为我们会得到一个输入,其中包含该特定时间跨度内股票价格的所有时间跨度。
我们的目标是在所有时间范围内找到并显示最佳股票价格,以便最大化利润。
示例:
输入:
上午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一样。仅考虑开始时间和其他方式。
你能给我一些建议吗?
答案 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”......,价值是最小的股票价格。