สมมติว่าเรามีรายการหมายเลขที่เรียกว่า 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