假如你正在为一投资公司咨询。他们正在做模拟,对一给定的股票连续观察n天,记为i=1,2,…,n;对每天i,该股票每股的价格p(i)。假设在这个时间区间内,在某一天他们想买1000(第i天)股而在另一天(第j天)卖出所有这些股。为得到最多收益,他们应什么时候买什么时候卖=8(days) 对应的为P(i) ={5, 15, 25, 16,7, 17, 23, 49} ($)。请设计算法找到正确的i与j.
二、对于海量数据,怎样存储,怎样排序,怎样搜索。
一代码:
import java.util.ArrayList;
import java.util.List;
public class MyTest {
/**
* @param args
*/
public static void main(String[] args) {
int[] prices = {5, 15, 25, 16,7, 17, 23, 49 };
List<Deal> dls = chooseDealTime(prices);
for (Deal dl : dls) {
System.out.println(“buys at ” + dl.getI() + “,sells at ” + dl.getJ());
}
}
private static List<Deal> chooseDealTime(int[] prices) {
// int[] prices = {5, 15, 25, 16,7, 17, 23, 49};
int num = prices.length – 1;
int by = 0, sl = 0;
List<Deal> deals = new ArrayList<Deal>();
Deal deal = null;
for (int i = 0; i < num; i++) {
if (by == 0 && prices[i] < prices[i + 1]) {
by = i + 1;
continue;
}
if (by > 0) {
if (prices[i] > prices[i + 1]) {
sl = i + 1;
}
else if (i == num – 1) {
sl = i + 2;
}else{
continue;
}
deal = new Deal();
deal.setI(by);
deal.setJ(sl);
deals.add(deal);
by = 0;
sl = 0;
deal = null;
}
}
return deals;
}
}
class Deal {
int i, j;
int getI() {
return i;
}
void setI(int i) {
this.i = i;
}
int getJ() {
return j;
}
void setJ(int j) {
this.j = j;
}
}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!