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

ตัวเลขมากที่สุดมากกว่าตัวเลขอันดับสองสองเท่าใน Python

สมมติว่าเรามีรายการตัวเลข เราต้องตรวจสอบว่าตัวเลขที่มากที่สุดมากกว่าตัวเลขอันดับสองมากกว่าสองเท่าหรือไม่ ตัวอย่างเช่น ถ้ารายการคือ [3, 9, 6] จะคืนค่า false เนื่องจาก 9 ไม่มากกว่า 12 (2 เท่าของ 6) เมื่อรายการคือ [6, 3, 15] จะคืนค่า true เนื่องจาก 15 มากกว่า 12 (2 เท่าของ 6)

ขั้นตอนการแก้ปัญหา

  1. ถ้าขนาดของ nums < 2 ให้คืนค่า False
  2. p_max := ค่าต่ำสุดของ nums[0] และ nums[1]
  3. c_max := ค่าสูงสุดของ nums[0] และ nums[1]
  4. ลูป i จาก 2 ถึงขนาดของ nums:
    • ถ้า nums[i] > p_max:
      • ถ้า nums[i] > c_max:
        • p_max := c_max
        • c_max := nums[i]
      • อื่นๆ:
        • p_max := nums[i]
  5. คืนค่า c_max > p_max * 2

การใช้งาน

class Solution:
    def solve(self, nums):
        if len(nums) < 2:
            return False
        p_max = min(nums[0], nums[1])
        c_max = max(nums[0], nums[1])
        for i in range(2, len(nums)):
            if nums[i] > p_max:
                if nums[i] > c_max:
                    p_max = c_max
                    c_max = nums[i]
                else:
                    p_max = nums[i]
        return c_max > p_max * 2

ob = Solution()
nums = [3, 6, 15]
print(ob.solve(nums))

อินพุต

[3,6,15]

เอาต์พุต

True