1.
看这个价格数组prices[],设置两个指针,ind1,ind2,ind1在始终ind2的前面;如果p[1](prices[ind1])>p[2],ind1=ind2,ind2=ind1+1(出售价比买进价高肯定亏);
int prices[] = { 7,4,6,8,2,9 };
int n = 6;
int ind1 = 0;
int ind2 = ind1 + 1;
int temp = 0;//temp表示利润,开始为0;
while (ind1 < n && ind2 < n) {
if (prices[ind1] > prices[ind2]) {
ind1 = ind2;
ind2 = ind1 + 1;
}
else if (prices[ind1] < prices[ind2]) {
if ((prices[ind2] - prices[ind1]) > temp) {
temp = prices[ind2] - prices[ind1];
ind2++;
}
else {
ind2++;
}
}
}
cout << temp;
注:在letcode上运行不了,因为少了一种特殊情况
2.
int minprice=ie9;
int maxprofit =0;
for(int price:prices){
maxprofit=max(maxprofit,price-minprice);
minprice=min(price;minprice);
}
return maxproft;