Home Leetcode 121 - Best Time to Buy and Sell Stock - Easy
Post
Cancel

Leetcode 121 - Best Time to Buy and Sell Stock - Easy

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/

Cho 1 mảng các số nguyên prices, với số prices[i] tương ứng giá stock của ngày thứ i. Hãy tính ra giá lợi nhuận cao nhất bằng cách chọn 1 ngày để mua stock và chọn 1 ngày (lớn hơn ngày mua) để bán stock và trừ 2 giá trị đó với nhau

Ví dụ: prices = [6,2,4,3,1,3,2,5]

leetcode121-diagram

StepleftrightMuaBánProfitMax profit
10162x0
2122422
3132312
41421x2
5451322
6461212
7471544

Time complexity: O(n) Space complexity: O(1)

Code Golang

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
func maxProfit(prices []int) int {
  l := 0
  r := 1

  maxProfit := 0
  maxIndex := len(prices) - 1

  for {
    if r > maxIndex {
      break
    }

    profit := prices[r] - prices[l]
    if profit < 0 {
      l = r
    } else {
      maxProfit = max(maxProfit, profit)
    }
    r += 1
  }
  return maxProfit
}

func max(a, b int) int {
  if a > b {
      return a
  }
  return b
}

Code Python

1
2
3
4
5
6
7
8
9
10
11
12
13
def maxProfit(self, prices: List[int]) -> int:
  l = 0
  r = 1
  maxProfit = 0

  while r < len(prices):
    profit = prices[r] - prices[l]
    if profit >= 0:
      maxProfit = max(maxProfit, profit)
    else:
      l = r
    r +=
  return maxProfit
This post is licensed under CC BY 4.0 by the author.