고유 정수 목록을 입력 및 출력으로 수신하거나 다음 거꾸로 된 숫자 피라미드에서 입력 숫자의 발생 횟수를 반환하는 프로그램 또는 함수를 작성해야합니다.
모든 단계의 원래 목록에서 시작하여 인접한 모든 숫자 쌍의 최대 값을 가진 새 목록을 만듭니다 (예 : 5 1 2 6
가 됨 5 2 6
). 목록에 하나의 숫자 만 있으면 중지합니다.
에 대한 전체 피라미드 5 1 2 6
는
5 1 2 6
5 2 6
5 6
6
결과 발생 횟수는 3 1 2 4
( 5 1 2 6
각각)입니다.
입력
- 반복하지 않는 하나 이상의 정수 목록. (예 :
1 5 1 6
유효하지 않습니다.)
산출
- 양의 정수 목록.
i
리스트 의 th 요소i
는 피라미드에서 th 입력 숫자 의 발생 횟수입니다 .
예
입력 => 출력
-5 => 1
8 4 => 2 1
5 9 7 => 1 4 1
1 2 3 9 8 6 7 => 1 2 3 16 3 1 2
6 4 2 1 3 5 => 6 4 2 1 3 5
5 2 9 1 6 0 => 2 1 12 1 4 1
120 5 -60 9 12 1 3 0 1200 => 8 2 1 3 16 1 4 1 9
68 61 92 58 19 84 75 71 46 69 25 56 78 10 89 => 2 1 39 2 1 27 6 5 1 6 1 2 14 1 12
이것은 코드 골프이므로 가장 짧은 항목이 이깁니다.
보너스 퍼즐 : O(n*log n)
시간 내에 문제를 해결할 수 있습니까?