สมมติว่าเรามีรายการตัวเลข เราต้องตรวจสอบว่าจำนวนที่มากที่สุดนั้นมากกว่าจำนวนที่ใหญ่เป็นอันดับสองมากกว่าสองเท่าหรือไม่ ตัวอย่างเช่น หากรายการเป็นแบบ [3, 9, 6] ก็จะคืนค่าเท็จ เนื่องจาก 9 มีขนาดไม่เกิน 12 (2 คูณ 6) เมื่อรายการเป็น [6, 3, 15] รายการนั้นจะกลับมาเป็นจริง เนื่องจาก 15 มีค่ามากกว่า 12 (2 คูณ 6)
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้าขนาดของ nums <2 แล้ว
- คืนค่าเท็จ
- p_max :=ขั้นต่ำของ nums[0] และ nums[1]
- c_max :=สูงสุดของ nums[0] และ nums[1]
- สำหรับ i ในช่วง 2 ถึงขนาดของ nums ให้ทำ
- ถ้า nums[i]> p_max แล้ว
- ถ้า nums[i]> c_max แล้ว
- p_max :=c_max
- c_max :=nums[i]
- มิฉะนั้น
- p_max :=nums[i]
- ถ้า nums[i]> c_max แล้ว
- ถ้า nums[i]> p_max แล้ว
- ส่งคืน 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]
ผลลัพธ์
None