สมมติว่าเรามีอาร์เรย์ A ในที่นี้ A[i] จะแสดงราคาของหุ้นที่กำหนดในวันที่ i เราต้องหากำไรสูงสุด เราสามารถทำธุรกรรมได้มากเท่าที่เราต้องการ (ธุรกรรมหมายถึงการซื้อและขายหุ้น) แต่เราต้องจำไว้ว่าเราอาจไม่ได้ทำธุรกรรมหลายรายการพร้อมกัน จึงต้องขายหุ้นก่อนซื้อใหม่ครับ
สมมติว่าอาร์เรย์เป็นเหมือน A =[7, 1, 5, 3, 6, 4] แล้วผลลัพธ์จะเป็น 7 ดังที่เราเห็นหากเราซื้อในวันที่ 2 (ดัชนี 1) ก็จะได้ 1 เป็น ราคาซื้อ แล้วถ้าเราขายในวันที่ 3 กำไรจะเป็น 5 – 1 =4 จากนั้นซื้อในวันที่ 4 และขายในวันที่ 5 ดังนั้นกำไรจะเป็น 6 – 3 =3
เพื่อแก้ปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้ -
- ให้คำตอบ =0
- สำหรับ i ในช่วง 0 ถึง n – 1 (n คือจำนวนขององค์ประกอบใน A) −
- ถ้า A[i] – A[i – 1]> 0 แล้ว
- answer :=answer + A[i] – A[i – 1]
- ถ้า A[i] – A[i – 1]> 0 แล้ว
- ส่งคืนคำตอบ
ตัวอย่าง
ให้เราดูการนำไปใช้เพื่อความเข้าใจที่ดีขึ้น
class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ ans = 0 for i in range(1,len(prices)): if prices[i] - prices[i-1] >0: ans+=(prices[i] - prices[i-1]) return ans ob1 = Solution() print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
อินพุต
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
ผลลัพธ์
13