nums라는 배열이 있고 여기에 양수와 음수가 포함되어 있다고 가정합니다. 또 다른 값 k가 있습니다. 그 곱이 k인 하위 배열이 배열에 존재하는지 여부를 확인해야 합니다.
따라서 입력이 nums =[-2,-1,1,3,5,8], k =6과 같으면 하위 배열이 [-2,-1,3]피>
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 최소 :=nums[0], 최대 :=nums[0]
- prod_max :=nums[0]
- 범위 1에서 숫자 크기 - 1까지의 i에 대해
- nums[i] <0이면
- 최대값과 최소값 바꾸기
- maximum :=nums[i] 및 (maximum * nums[i])의 최대값
- minimum :=nums[i] 및 (minimum * nums[i])의 최소값
- 최소값 또는 최대값이 k와 같으면
- 참 반환
- prod_max :=prod_max 및 최대값의 최대값
- nums[i] <0이면
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시 코드
def solve(nums, k): minimum = nums[0] maximum = nums[0] prod_max = nums[0] for i in range( 1, len(nums)): if nums[i] < 0: maximum, minimum = minimum, maximum maximum = max(nums[i], maximum * nums[i]) minimum = min(nums[i], minimum * nums[i]) if minimum == k or maximum == k: return True prod_max = max(prod_max, maximum) return False nums = [-2,-1,1,3,5,8] k = 6 print(solve(nums, k))
입력
[-2,-1,1,3,5,8], 6
출력
True