leetcode.com This is the practice of coding interviews for software developers. A total of more than 1,500 coding questions have been posted, and it seems that the same questions are often asked in actual interviews.
Introduction to golang + algorithm I will solve it with go and Python to strengthen the brain. (Python is weak but experienced)
Say you have an array
prices
for which the ith element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times).
Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).
Japanese translation
Suppose you have an array
prices
whose * i * th element is the price of a particular stock on the * i * day.Design an algorithm to find the maximum profit. You can complete as many transactions as you need (that is, buy one and sell one share multiple times).
** Note: ** You cannot make multiple transactions at the same time (that is, you must sell the stock before you can buy it again).
Example 1:
Input: [7,1,5,3,6,4]
Output: 7
Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4.
Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3.
Example 2:
Input: [1,2,3,4,5]
Output: 4
Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are
engaging multiple transactions at the same time. You must sell before buying again.
Example 3:
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
Answer code
def maxProfit(self, prices: List[int]) -> int:
max_profit = 0
for i in range(len(prices) - 1):
max_profit += max(prices[i+1] - prices[i], 0)
return max_profit
--I'll write it in Go too!
func maxProfit(prices []int) int {
profits := 0
stack := prices[0]
for i := 0; i < len(prices)-1; i++ {
if prices[i] > prices[i+1] {
profits += prices[i] - stack
stack = prices[i+1]
}
}
profits += prices[len(prices)-1] - stack
return profits
}
Recommended Posts