Сложность: easy
Вам дан массив цен, где prices[i] является ценой данной акции в i-й день.
Ваша задача — максимизировать вашу прибыль, выбрав один день для покупки акции и другой день в будущем для ее продажи.
Верните максимальную прибыль, которую вы можете получить от этой операции. Если прибыль получить невозможно, верните 0.
Пример:
Input: prices = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.
👨💻 Алгоритм:
1⃣Инициализируем minprice как бесконечность и maxprofit как 0.
2⃣Проходим по массиву: если текущая цена меньше minprice, обновляем минимум. Если разница между текущей ценой и minprice больше maxprofit, обновляем прибыль.
3⃣В конце возвращаем maxprofit — максимальную разницу покупки/продажи, которую можно было получить.
😎 Решение:
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;
}
}Ставь 👍 и забирай 📚 Базу знаний
