[LeetCode 121] Best Time to Buy and Sell Stock
LeetCode 121 (Java)
[Best Time to Buy and Sell Stock] 문제 풀이
[LeetCode 121] Best Time to Buy and Sell Stock
Description
You are given an array prices where prices[i] is the price of a given stock on the i^th day.
You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.
Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.
Example 1
- 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.
Example 2
- Input: prices = [7,6,4,3,1]
- Output: 0
- Explanation: In this case, no transactions are done and the max profit = 0.
Constraints
1 <= prices.length <= 10^50 <= prices[i] <= 10^4
Code
내 제출
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public int maxProfit(int[] prices) {
int ans = 0, mi = prices[0];
for (int v : prices) {
ans = Math.max(ans, v - mi);
mi = Math.min(mi, v);
}
return ans;
}
}
| Runtime | Memory |
|---|---|
| 1 ms | 61.5 MB |
다른 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public int maxProfit(int[] prices) {
if (prices.length == 0 || prices.length == 1) {
return 0;
}
int min = prices[0];
int profit = Math.max(prices[1] - min, 0);
for (int i = 1; i < prices.length; i++) {
if (min > prices[i]) {
min = prices[i];
}
profit = Math.max(prices[i] - min, profit);
}
return profit;
}
}
Reference
- https://github.com/doocs/leetcode/blob/main/solution/0100-0199/0121.Best%20Time%20to%20Buy%20and%20Sell%20Stock/Solution.java
This post is licensed under CC BY 4.0 by the author.
