best-time-to-buy-and-sell-stock py3
This commit is contained in:
parent
ea19828ef3
commit
731af263a4
25
0121_best-time-to-buy-and-sell-stock/README.md
Normal file
25
0121_best-time-to-buy-and-sell-stock/README.md
Normal file
@ -0,0 +1,25 @@
|
||||
You are given an array `prices` where `prices[i]` is the price of a given stock on the `ith` 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 <= 105`
|
||||
* `0 <= prices[i] <= 104`
|
20
0121_best-time-to-buy-and-sell-stock/python3/solution.py
Normal file
20
0121_best-time-to-buy-and-sell-stock/python3/solution.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Time: O(N)
|
||||
# Space: O(1)
|
||||
class Solution:
|
||||
def maxProfit(self, prices: List[int]) -> int:
|
||||
if len(prices) < 1: return 0
|
||||
|
||||
i, j = 0, 1
|
||||
max_profit = 0
|
||||
|
||||
while i <= j < len(prices):
|
||||
max_profit = max(prices[j] - prices[i], max_profit)
|
||||
|
||||
# Buy low, sell high — so we need to keep moving i (like
|
||||
# a buy pointer) if jth price is smaller than what ith is.
|
||||
if prices[j] < prices[i]:
|
||||
i = j
|
||||
else:
|
||||
j += 1
|
||||
|
||||
return max_profit
|
Loading…
Reference in New Issue
Block a user