Java_DP_卖卖股票

输入一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即:买入和卖出一只股票一次),设计一个算法来计算你能获得的最大利润。
Tip:不能在买入股票前卖出股票。

Eg:

输入:7 1 5 3 6 4(空格间隔)
输出:5
解释:在第二天(股票价格 = 1)的时候买入,在第五天(股票价格为 = 6)的时候卖出,最大利润 = 6-1=5
package DP;

import java.util.Scanner;

public class list03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
//		介于有部分小伙伴还不是很精通整数、字符串、字符串数组的转换,我就再唠叨一边吧!


		
//		读入一行数据,存储到字符串中
		String string=in.nextLine();
//		将字符串以“_”分割为字符串数组
		String[] charStrings=string.split(" ");
//		定义股票每日价格的整数型数组,长度为字符串数组的长度
		int[] princes=new int[charStrings.length];
//		通过Integer.valueOf()将字符串数组中每个字符转成整数型数组中的整数
		for(int i=0;i<charStrings.length;i++) {
			princes[i]=Integer.valueOf(charStrings[i]);
		}	
		System.out.println(maxProfit(princes));
	}
	public static int maxProfit(int[] prices) {
		if(prices.length==0)
			return 0;
//		max用来存储最大利润
		int max=0;
//		min用来存储股票的最低价格
		int min=prices[0];
//		通过for循环寻找最大利润与股票的最低价格
		for(int i=1;i<prices.length;i++) {
//			将已存最大利润与目前利润作比较,取出最大利润
			if(max<prices[i]-min)
				max=prices[i]-min;
//			将已存最低价格与目前价格作比较,取出最低价格
//			这样既保证min为当前的最低价格,又保证max卖出的日期在min买入日期之前
			min=Math.min(min, prices[i]);
		}
		return max;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值