Cho danh sách số, kiểm tra xem số lớn nhất có lớn hơn gấp đôi số lớn thứ hai hay không. Ví dụ: [3, 9, 6] -> false (9 không > 2*6=12). [6, 3, 15] -> true (15 > 2*6=12).
Các bước giải quyết:
- Nếu độ dài < 2, trả về
False. p_max = min(nums[0], nums[1]),c_max = max(nums[0], nums[1]).- Duyệt
itừ 2 đến cuối:- Nếu
nums[i] > p_max:- Nếu
nums[i] > c_max:p_max = c_max,c_max = nums[i]. - Ngược lại:
p_max = nums[i].
- Nếu
- Nếu
- Trả về
c_max > p_max * 2.
Ví dụ minh họa
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))
Đầu vào
[3,6,15]
Đầu ra
None