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

Python의 숫자 목록에서 가장 긴 부호 교대 부분 시퀀스의 길이를 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 각 연속 숫자에서 부호를 뒤집는 가장 긴 부분 수열의 길이를 찾아야 합니다.

따라서 입력이 nums =[1, 3, -6, 4, -3]과 같으면 [1, -6, 4, -3]을 선택할 수 있으므로 출력은 4가 됩니다.

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

  • 양수 :=0, 음수 :=0
  • 숫자 단위의 각 n에 대해 다음을 수행합니다.
    • n <0이면
      • 음수 :=위치 + 1
    • 그렇지 않으면
      • pos :=부정 + 1
  • pos 및 neg의 최대값을 반환합니다.

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

예시

class Solution:
   def solve(self, nums):
      pos = neg = 0
      for n in nums:
         if n < 0:
            neg = pos + 1
         else:
            pos = neg + 1
      return max(pos, neg)
ob = Solution()
nums = [1, 3, -6, 4, -3]
print(ob.solve(nums))

입력

[1, 3, -6, 4, -3]

출력

4