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

Python에서 A의 최소값과 A의 크기의 곱이 최대가 되는 하위 목록의 크기를 찾는 프로그램

<시간/>

nums라는 숫자 목록과 다른 값 pos가 있다고 가정합니다. (최소값 A) * (A 크기)가 최대화되도록 인덱스 pos를 포함하는 nums의 하위 목록 A를 찾은 다음 값을 반환해야 합니다.

따라서 입력이 nums =[-2, 2, 5, 4] pos =3과 같으면 최상의 하위 목록이 [5, 4]이므로 출력은 8이 됩니다. (5, 4) =4이고 크기는 2이고 4 * 2 =8입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

예시

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

class Solution:
   def solve(self, A, pos):
      NINF = float("-inf")
      ans = m = A[pos]
      i = pos
      j = pos
      for _ in range(len(A) - 1):
         left = A[i - 1] if i - 1 >= 0 else NINF
         right = A[j + 1] if j + 1 < len(A) else NINF
         if left >= right:
            i -= 1
            m = min(m, A[i])
         else:
            j += 1
            m = min(m, A[j])
         ans = max(ans, m * (j - i + 1))
      return ans
ob = Solution()
nums = [-2, 2, 5, 4]
pos = 3
print(ob.solve(nums, pos))

입력

[-2, 2, 5, 4], 3

출력

8