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

분할할 수 있는 하위 목록의 수를 찾는 프로그램으로 주어진 목록이 파이썬에서 최종적으로 정렬됩니다.

<시간/>

nums라는 숫자 목록이 있다고 가정합니다. 목록을 개별 하위 목록으로 분할한 다음 각 부분을 정렬할 수 있습니다. 나중에 전체 숫자가 정렬되도록 분할할 수 있는 최대 하위 목록 수를 찾아야 합니다.

따라서 입력이 nums =[4, 3, 2, 1, 7, 5]와 같으면 [4, 3, 2, 1] 및 [7, 5]

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

  • 카운트:=0
  • main_sum :=0, sorted_sum :=0
  • nums의 각 요소 x와 정렬된 형식의 yy에 대해 do
    • main_sum :=main_sum + x
    • sorted_sum :=sorted_sum + y
    • main_sum이 sorted_sum과 같으면
      • 카운트 :=카운트 + 1
  • 반환 횟수

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

class Solution:
   def solve(self, nums):
      count = 0
      main_sum = sorted_sum = 0

      for x, y in zip(nums, sorted(nums)):
         main_sum += x
         sorted_sum += y
         if main_sum == sorted_sum:
            count += 1

      return count

ob = Solution()
nums = [4, 3, 2, 1, 7, 5]
print(ob.solve(nums))

입력

[4, 3, 2, 1, 7, 5]

출력

2