nums라는 숫자 목록이 있다고 가정합니다. 오름차순으로 정렬된 숫자에서 모든 피크 요소의 인덱스를 찾아야 합니다. 다음 세 가지 조건이 모두 충족될 때 피크 요소의 인덱스 i:1. nums[i]와 다른 오른쪽의 다음 숫자는 존재하지 않거나 nums[i]보다 작아야 합니다. 2. 의 이전 숫자 nums[i]와 다른 왼쪽이 없거나 nums[i]보다 작아야 합니다. 3. 왼쪽 또는 오른쪽에 nums[i]와 다른 숫자가 하나 이상 있습니다.
따라서 입력이 nums =[5, 8, 8, 8, 6, 11, 11]과 같으면 출력은 [1, 2, 3, 5, 6]이 됩니다. 피크 [1,2,3]. 그리고 11도 [5, 6]입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=숫자 크기
- ans :=새 목록
- i :=0
- 내가
- i0 :=나는
- i
- 나는 :=나는 + 1
- i0이 0이 아니거나 i가 n이 아니면
- as 끝에 (i0에서 i-1까지의 목록) 삽입
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): n = len(nums) ans = [] i = 0 while i < n: i0 = i while i < n and nums[i] == nums[i0]: i += 1 if (i0 == 0 or nums[i0] > nums[i0 - 1]) and (i == n or nums[i0] > nums[i]): if i0 != 0 or i != n: ans.extend(range(i0, i)) return ans nums = [5, 8, 8, 8, 6, 11, 11] print(solve(nums))
입력
[5, 8, 8, 8, 6, 11, 11]
출력
[1, 2, 3, 5, 6]