best-time-to-buy-and-sell-stock py3

This commit is contained in:
Sangeeth Sudheer 2022-04-24 00:26:19 +05:30
parent ea19828ef3
commit 731af263a4
2 changed files with 45 additions and 0 deletions

View 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`

View 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