요소가 여러 번 나타날 수 있는 일부 요소가 있는 배열이 있다고 가정합니다. 요소가 빈도 증가에 따라 정렬되도록 배열을 정렬해야 합니다. 따라서 어떤 요소가 더 적게 나타나는지 먼저 표시되는 식입니다.
따라서 입력이 nums =[1,5,3,1,3,1,2,5]와 같으면 출력은 [2, 5, 5, 3, 3, 1, 1, 1]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
mp :=새 지도
-
nums의 각 고유 요소 i에 대해 수행
-
x:=숫자로 표시되는 i의 수
-
x가 mp에 있으면
-
mp[x]
끝에 i 삽입
-
-
그렇지 않으면 mp[x] :=요소가 하나만 있는 목록 i
-
-
ans:=새 목록
-
키를 기준으로 mp를 정렬하는 각 i에 대해 다음을 수행합니다.
-
mp[i] 목록을 역순으로 정렬한 각 j에 대해
-
j, i 횟수를 ans에 삽입
-
-
-
반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): mp = {} for i in set(nums): x=nums.count(i) try: mp[x].append(i) except: mp[x]=[i] ans=[] for i in sorted(mp): for j in sorted(mp[i], reverse=True): ans.extend([j]*i) return ans nums = [1,5,3,1,3,1,2,5] print(solve(nums))
입력
[1,5,3,1,3,1,2,5]
출력
[2, 5, 5, 3, 3, 1, 1, 1]