LeetCode - Best Time to Buy and Sell Stock
class Solution {
public int maxProfit(int[] prices) {
// 1. 최대 수익 max 선언 및 0으로 초기화
int max = 0;
// 2. 이중 반복문으로 최대 수익 업데이트
for (int i = 0; i < prices.length; i++) {
int currentProfit = 0;
for (int j = i + 1; j < prices.length; j++) {
currentProfit = prices[j] - prices[i];
if (currentProfit > max) {
max = currentProfit;
}
}
}
// 3. max 리턴
return max;
}
}
class Solution {
public int maxProfit(int[] prices) {
// 브루트 포스 시간 한도 초과 O(n*n), 더 나은 방법 찾기
// 카데인 알고리즘 -> O(n)
// 1. 최대 수익 maxProfit 및 최소 가격을 기억하기 위한 minPrice
int maxProfit = 0; // 수익이 없을 수 있으므로 0으로 초기화
int minPrice = prices[0]; // 첫번째 가격으로 초기화
// 2. 배열 prices를 순회하면서 maxProfit 및 minPrice 업데이트
for (int i = 1; i < prices.length; i++) {
int profit = prices[i] - minPrice;
maxProfit = Math.max(maxProfit, profit);
minPrice = Math.min(minPrice, prices[i]);
}
// 3. maxProfit 리턴
return maxProfit;
}
}