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

วิธีการแก้ปัญหา

  • ให้ answer = 0
  • สำหรับ i ในช่วง 0 ถึง n - 1 (n คือจำนวนองค์ประกอบใน A):
    • ถ้า A[i] - A[i - 1] > 0:
      • answer := answer + A[i] - A[i - 1]
  • คืนค่า answer

ตัวอย่าง

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