Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เวลาที่ดีที่สุดในการซื้อและขายหุ้น II ใน Python


สมมติว่าเรามีอาร์เรย์ 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]
  • ส่งคืนคำตอบ

ตัวอย่าง

ให้เราดูการนำไปใช้เพื่อความเข้าใจที่ดีขึ้น

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