java买卖股票的最佳时机
时间: 2023-10-07 13:12:39 浏览: 75
这是一道经典的动态规划问题。我们可以使用一个一维数组来记录每天卖出股票的最大收益,其中数组的第i个元素表示第i天卖出股票的最大收益。我们可以依次遍历每一天,计算卖出股票的最大收益,并更新数组中的元素,最终返回数组中的最大值即可。
具体实现如下:
```java
public int maxProfit(int[] prices) {
if (prices == null || prices.length < 2) {
return 0;
}
int n = prices.length;
int[] dp = new int[n];
int minPrice = prices[0];
for (int i = 1; i < n; i++) {
dp[i] = Math.max(dp[i - 1], prices[i] - minPrice);
minPrice = Math.min(minPrice, prices[i]);
}
return dp[n - 1];
}
```
时间复杂度为 O(n),空间复杂度为 O(n)。
相关问题
买卖股票最佳时机java
卖股票的最佳时机是指在股票价格变化的情况下,通过买入和卖出股票获得最大利润的时间点。在Java中,可以通过贪心算法来解决这个问题。具体来说,我们可以遍历整个股票价格数组,同时维护一个变量minPrice来记录我们目前遇到的最小的一个价格,通过prices[i]-minPrice来计算出以第 i 天的价格出售股票可以获得的最大的利润是多少,那么本题最终答案就是第 i 天的价格出售股票可以获得的最大的利润中的最大值。
以下是Java代码实现:
```java
class Solution {
public int maxProfit(int[] prices) {
int minPrice = Integer.MAX_VALUE;
int maxprofit = 0;
for (int i = 0; i < prices.length; i++) {
//取最左最小值,如果没有则比较获取的最大利润
if (minPrice > prices[i]) {
minPrice = prices[i];
}else if (prices[i]- minPrice > maxprofit) {
maxprofit= prices[i] - minPrice;
}
}
return maxprofit;
}
}
```
Java实现买卖股票最佳时间
要实现买卖股票的最佳时间,可以使用一种称为「动态规划」的算法。下面是用 Java 实现的一个例子:
```java
public int maxProfit(int[] prices) {
int n = prices.length;
int[] dp = new int[n]; // dp[i] 表示第 i 天卖出股票能获得的最大利润
int minPrice = prices[0]; // 记录到目前为止的最低股价
for (int i = 1; i < n; i++) {
minPrice = Math.min(minPrice, prices[i]);
dp[i] = Math.max(dp[i - 1], prices[i] - minPrice);
}
return dp[n - 1];
}
```
这段代码中,我们使用一个数组 `dp` 来记录每一天卖出股票能获得的最大利润。我们同时也维护一个变量 `minPrice` 来记录到目前为止的最低股价。
在每一天,我们都更新 `minPrice` 为当前股价和 `minPrice` 中的较小值。然后,我们计算当天卖出股票能获得的利润,即 `prices[i] - minPrice`。最后,我们将当前的最大利润与前一天的最大利润 `dp[i - 1]` 进行比较,取较大值。
最终,返回 `dp[n - 1]` 即可得到买卖股票的最大利润。
希望对你有帮助!
阅读全文