숫자 목록이 있다고 가정합니다. 가장 큰 숫자가 두 번째로 큰 숫자보다 2배 이상 큰지 확인해야 합니다. 예를 들어 목록이 [3, 9, 6]과 같으면 9가 12(2 x 6)보다 크지 않으므로 false를 반환합니다. 목록이 [6, 3, 15]이면 15가 12보다 크므로 true를 반환합니다(2 x 6).
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 숫자의 크기가 2보다 작으면
- 거짓을 반환
- p_max :=nums[0] 및 nums[1]의 최소값
- c_max :=nums[0] 및 nums[1]의 최대값
- 숫자 크기에서 범위 2의 i에 대해
- 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