优客文库提供全面的范文格式和文档模板,包括申请书、合同、借据、证明、求职信等,助力您快速撰写专业文档。

用java写一个算法:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

来自 黑龙江省哈尔滨市 的网友 时间: 热度:°C 加入收藏 我要投稿 点赞()
可以使用动态规划的方法来解决这个问题。假设股票价格数组为prices,长度为n。

首先定义两个变量:minPrice表示当前遍历到的最低股票价格,maxProfit表示当前遍历到的最大利润。

然后遍历整个股票价格数组,对于每个价格,更新minPrice为当前价格和minPrice中的较小值,更新maxProfit为当前价格与minPrice的差值和maxProfit中的较大值。

最后返回maxProfit即为买卖该股票一次可能获得的最大利润。

以下是Java代码实现:

```java
public int maxProfit(int[] prices) {
int n = prices.length;
if (n == 0) {
return 0;
}

int minPrice = prices[0];
int maxProfit = 0;

for (int i = 1; i < n; i++) {
minPrice = Math.min(minPrice, prices[i]);
maxProfit = Math.max(maxProfit, prices[i] - minPrice);
}

return maxProfit;
}
```

这个算法的时间复杂度是O(n),其中n是股票价格数组的长度。
221381
领取福利

微信扫码领取福利

微信扫码分享