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

Python에서 가장 긴 엄격하게 증가하고 감소하는 하위 목록의 길이를 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정합니다. (최소 길이 3) 값이 엄격하게 증가했다가 감소하도록 가장 긴 하위 목록의 길이를 찾아야 합니다.

따라서 입력이 nums =[7, 1, 3, 5, 2, 0]과 같으면 하위 목록이 [2, 4, 6, 3, 1]이므로 출력은 5가 됩니다. 엄격하게 증가하고 감소합니다 .

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

  • i :=0, n :=a의 크기, res :=-무한대
  • 내가
  • st :=나
  • linc:=0, ldec:=0
  • i
  • linc :=linc + 1
  • 나는 :=나는 + 1
  • i a[i + 1] 동안 수행
    • ldec :=ldec + 1
    • 나는 :=나는 + 1
  • linc> 0 및 ldec> 0이면
    • res :=최대 res 및 (i - st + 1)
  • i
  • 나는 :=나는 + 1
  • res>=0 그렇지 않으면 0이면 res를 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시

    class Solution:
       def solve(self, a):
          i, n, res = 0, len(a), float("-inf")
          while i < n - 2:
             st = i
             linc, ldec = 0, 0
             while i < n - 1 and a[i] < a[i + 1]:
                linc += 1
                i += 1
             while i < n - 1 and a[i] > a[i + 1]:
                ldec += 1
                i += 1
             if linc > 0 and ldec > 0:
                res = max(res, i - st + 1)
             while i < n - 1 and a[i] == a[i + 1]:
                i += 1
          return res if res >= 0 else 0
    ob = Solution()
    nums = [8, 2, 4, 6, 3, 1]
    print(ob.solve(nums))
    이면 res를 반환합니다.

    입력

    [[8, 2, 4, 6, 3, 1]

    출력

    5