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

파이썬에서 다른 목록보다 작은 요소를 가진 배열의 첫 번째 분할의 최소 길이를 찾는 프로그램

<시간/>

숫자 num의 목록이 있다고 가정하고 part1의 모든 요소가 part1의 모든 요소보다 작거나 같도록 목록을 part1과 part2의 두 부분으로 분할하려고 합니다. part1에서 가능한 가장 작은 길이를 찾아야 합니다(길이가 0이 아님).

따라서 입력이 nums =[3, 1, 2, 5, 4]와 같으면 출력은 3이 됩니다. part1 =[3, 1, 2] 및 part2 =[5, 4].

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

  • p :=최소 숫자
  • s :=0
  • 0부터 숫자 - 1까지의 범위에 있는 i에 대해
    • nums[i]가 p와 같으면
      • :=나
      • 루프에서 나오다
  • p :=num의 하위 목록의 최대값[인덱스 0에서 s까지]
  • an :=s
  • s + 1에서 nums - 1까지의 범위에 있는 i에 대해
    • 숫자[i]
    • an :=나는
  • + 1 반환
  • 예시

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

    def solve(nums):
       p = min(nums)
       s = 0
       for i in range(len(nums)):
          if nums[i] == p:
             s = i
             break
       p = max(nums[: s + 1])
       ans = s
       for i in range(s + 1, len(nums)):
          if nums[i] < p:
             ans = i
       return ans + 1
    
    nums = [3, 1, 2, 5, 4]
    print(solve(nums))

    입력

    [3, 1, 2, 5, 4]

    출력

    3