Giả sử chúng ta có một mảng với một số phần tử trong đó các phần tử có thể xuất hiện nhiều lần. Chúng ta phải sắp xếp mảng sao cho các phần tử được sắp xếp theo mức độ tăng tần số của chúng. Vì vậy, yếu tố nào xuất hiện với số lượng thời gian ít hơn sẽ đến trước và cứ tiếp tục như vậy.
Vì vậy, nếu đầu vào là nums =[1,5,3,1,3,1,2,5], thì đầu ra sẽ là [2, 5, 5, 3, 3, 1, 1, 1]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
mp:=một bản đồ mới
-
đối với mỗi phần tử riêng biệt mà tôi từ nums, hãy thực hiện
-
x:=số tôi hiện diện trong nums
-
nếu x có trong mp thì
-
chèn i vào cuối mp [x]
-
-
nếu không thì mp [x]:=một danh sách chỉ có một phần tử i
-
-
ans:=một danh sách mới
-
đối với mỗi tôi, sắp xếp mp dựa trên khóa, hãy thực hiện
-
đối với mỗi j, sắp xếp danh sách mp [i] theo thứ tự ngược lại, thực hiện
-
chèn j, i số lần vào ans
-
-
-
trả lại ans
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
[1,5,3,1,3,1,2,5]
Đầu ra
[2, 5, 5, 3, 3, 1, 1, 1]