救命,仔细一想,双指针同向还是太暴力了
class Solution {
public int maxProfit(int[] prices) {
int first=0;
for(int i=0;i<prices.length-1;i++)
{ int j=i+1;
while(j<prices.length)
{
if(prices[i]<prices[j])
{
int u=prices[j]-prices[i];
first=first<=u?u:first;
j++;
}
else
{
j++;
}
}
}
return first;
}
}
官方解:
- 先找出历史最低点
- 只要求最低点之后的最大利润
public class Solution {
public int maxProfit(int prices[]) {
int minprice = Integer.MAX_VALUE;
int maxprofit = 0;
for (int i = 0; i < prices.length; i++) {
if (prices[i] < minprice) {
minprice = prices[i];
} else if (prices[i] - minprice > maxprofit) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
}
}