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

모든 요소가 이전보다 작은 요소를 찾고 그 이후에 모든 요소가 Python에서 더 큰 요소를 찾습니다.


배열이 ​​있다고 가정해 보겠습니다. 앞의 모든 요소가 그보다 작은 요소와 그 뒤에 있는 모든 요소가 그보다 큰 요소를 찾아야 합니다. 마지막으로 요소의 인덱스를 반환하고 해당 요소가 없으면 -1을 반환합니다.

따라서 입력이 A - [6, 2, 5, 4, 7, 9, 11, 8, 10]과 같으면 출력은 4가 됩니다.

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

  • n :=arr의 크기

  • maximum_left :=n 크기의 배열

  • maximum_left[0] :=-무한대

  • 범위 1에서 n까지의 i에 대해 수행

    • maximum_left[i] :=maximum_left[i-1]의 최대값, arr[i-1]

  • minimum_right :=무한대

  • n-1 ~ -1 범위의 i에 대해 1 감소, 수행

    • maximum_left[i] arr[i]이면

      • 반환 i

    • minimum_right :=minimum_right의 최소값, arr[i]

      • 반환 -1

예시

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

def get_element(arr):
   n = len(arr)
   maximum_left = [None] * n
   maximum_left[0] = float('-inf')
   for i in range(1, n):
      maximum_left[i] = max(maximum_left[i-1], arr[i-1])
   minimum_right = float('inf')
   for i in range(n-1, -1, -1):
      if maximum_left[i] < arr[i] and minimum_right > arr[i]:
         return i
      minimum_right = min(minimum_right, arr[i])
   return -1
arr = [6, 2, 5, 4, 7, 9, 11, 8, 10]
print(get_element(arr))

입력

[6, 2, 5, 4, 7, 9, 11, 8, 10]

출력

4