您的位置:首页 > 编程语言 > Java开发

假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润

2016-10-16 21:03 1166 查看
参考:http://blog.csdn.net/jx_870915876/article/details/52587634

题目描述

假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润

输入

价格序列

输出

最大可能的利润

样例输入

2 3 2 4

样例输出

2

数据是有顺序的,卖出不能在买入之前

Java代码实现

import java.util.Scanner;

public class Main2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String inputString = "";
if (sc.hasNextLine()) {
inputString = sc.nextLine();
}
String[] inputArrayInt = inputString.split(" ");
int len = inputArrayInt.length;
int[] intArray = new int[len];
for (int i = 0; i < len; i++) {
intArray[i] = Integer.valueOf(inputArrayInt[i]);
}
maxProfit(intArray);
}

public static void maxProfit(int[] array) {
int result = 0;
if (array.length == 0) {
System.out.println(0);
}
int max = array[0];
int min = array[0];
int max_index = 0;
int min_index = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] <= min) {
min = array[i];
min_index = i;
}
else if (array[i] >= max || (max_index <= min_index)) {
max = array[i];
max_index = i;
}
if (max_index >= min_index) {
int temp = max - min;
result = result >= temp ? result : temp;
}
}
System.out.println(result);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐