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

Python에서 분리된 간격으로 파티션 배열을 찾는 프로그램

<시간/>

배열 번호가 있다고 가정하고 왼쪽과 오른쪽이라고 하는 두 개의 다른 하위 배열로 분할해야 다음과 같이 됩니다. -

  • 왼쪽 부분배열의 각 요소는 오른쪽 부분배열의 각 요소보다 작거나 같습니다.

  • 왼쪽 및 오른쪽 하위 배열이 비어 있지 않습니다.

  • 왼쪽 하위 배열은 가능한 가장 작은 크기를 갖습니다.

이러한 분할 후 왼쪽 길이를 찾아야 합니다.

따라서 입력이 nums =[5,0,3,8,6]과 같으면 왼쪽 배열이 [5,0,3]이고 오른쪽 하위 배열이 [8,6]이 되기 때문에 출력은 3이 됩니다.

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

  • mx :=null, temp :=null, nmx :=null

  • temp2 :=0

  • 숫자로 된 각 i에 대해 수행

    • mx가 null과 같으면

      • mx :=나는

      • nmx :=i

      • 임시 :=임시2

      • temp2 :=temp2 + 1

      • 다음 반복으로 이동

    • i>=mx이면

      • temp2 :=temp2 + 1

      • i>nmx이면

        • nmx :=i

      • 다음 반복으로 이동

    • 그렇지 않으면

      • 임시 :=임시2

      • temp2 :=temp2 + 1

      • mx :=nmx

      • 다음 반복으로 이동

  • 반환 온도+1

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

def solve(nums):
   mx = None
   temp = None
   nmx = None
   temp2 = 0

   for i in nums:

      if(mx==None):
         mx = i
         nmx = i
         temp = temp2
         temp2+=1
         continue

      if(i>=mx):
         temp2+=1
         if(i>nmx):
            nmx = i
         continue

      else:
         temp = temp2
         temp2+=1
         mx = nmx
         continue

   return temp+1

nums = [5,0,3,8,6]
print(solve(nums))

입력

[5,0,3,8,6]

출력

3