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