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

来源:互联网 发布:哥本哈根大学 知乎 编辑:程序博客网 时间:2024/04/30 21:13

运行环境:赛码网

题目描述

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

输入

价格序列,用,号隔开

输出

最大可能的利润

样例输入

2324

样例输出

2

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

package com.vapy.offer;/** * * @author vapy 2016年9月19日 * */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]);        }        func(intArray);    }    public static void func(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);    }}

本文代码可在github查看:点击此处

1 0
原创粉丝点击