Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

주어진 제품이 있는 하위 배열이 Python의 배열에 존재하는지 확인

<시간/>

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 및 최대값의 최대값
  • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시 코드

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