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

โปรแกรมค้นหาจำนวนรายการย่อยที่เราสามารถแบ่งพาร์ติชั่นได้ดังนั้นรายการที่กำหนดจึงถูกจัดเรียงในที่สุดใน python


สมมติว่าเรามีรายการหมายเลขที่เรียกว่า nums เราสามารถแบ่งรายการออกเป็นรายการย่อยบางรายการแล้วจัดเรียงแต่ละส่วน เราต้องหาจำนวนรายการย่อยสูงสุดที่เราสามารถแบ่งพาร์ติชั่นได้ ตัวเลขทั้งหมดจะถูกจัดเรียงในภายหลัง

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[4, 3, 2, 1, 7, 5] ผลลัพธ์จะเป็น 2 เนื่องจากเราสามารถจัดเรียงรายการย่อยได้ เช่น [4, 3, 2, 1] และ [7, 5]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • นับ :=0
  • main_sum :=0, sorted_sum :=0
  • สำหรับแต่ละองค์ประกอบ x จาก nums และ y จากรูปแบบการเรียงลำดับของ nums ให้ทำ
    • main_sum :=main_sum + x
    • sorted_sum :=sorted_sum + y
    • ถ้า main_sum เหมือนกับ sorted_sum แล้ว
      • นับ :=นับ + 1
  • จำนวนคืนสินค้า

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

ตัวอย่าง

class Solution:
   def solve(self, nums):
      count = 0
      main_sum = sorted_sum = 0

      for x, y in zip(nums, sorted(nums)):
         main_sum += x
         sorted_sum += y
         if main_sum == sorted_sum:
            count += 1

      return count

ob = Solution()
nums = [4, 3, 2, 1, 7, 5]
print(ob.solve(nums))

อินพุต

[4, 3, 2, 1, 7, 5]

ผลลัพธ์

2