สมมติว่าเรามีรายการตัวเลข เราต้องตรวจสอบว่าตัวเลขที่มากที่สุดมากกว่าตัวเลขอันดับสองมากกว่าสองเท่าหรือไม่ ตัวอย่างเช่น ถ้ารายการคือ [3, 9, 6] จะคืนค่า false เนื่องจาก 9 ไม่มากกว่า 12 (2 เท่าของ 6) เมื่อรายการคือ [6, 3, 15] จะคืนค่า true เนื่องจาก 15 มากกว่า 12 (2 เท่าของ 6)
ขั้นตอนการแก้ปัญหา
- ถ้าขนาดของ
nums< 2 ให้คืนค่าFalse 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_maxc_max:=nums[i]
- อื่นๆ:
p_max:=nums[i]
- ถ้า
- ถ้า
- คืนค่า
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