題目描述:
給你乙個整數陣列 arr ,請你將陣列中的每個元素替換為它們排序後的序號。
序號代表了乙個元素有多大。序號編號的規則如下:
序號從 1 開始編號。
乙個元素越大,那麼序號越大。如果兩個元素相等,那麼它們的序號相同。
每個數字的序號都應該盡可能地小。
示例 1:
輸入:arr = [40,10,20,30]
輸出:[4,1,2,3]
解釋:40 是最大的元素。 10 是最小的元素。 20 是第二小的數字。 30 是第三小的數字。
示例 2:
輸入:arr = [100,100,100]
輸出:[1,1,1]
解釋:所有元素有相同的序號。
示例 3:
輸入:arr = [37,12,28,9,100,56,80,5,12]
輸出:[5,3,4,2,8,6,7,1,3]
0 <= arr.length <= 105
-109 <= arr[i] <= 109
方法1:
主要思路:
(1)使用map的排序來將原陣列中的元素作為鍵,對應的索引作為值,進行對映統計;
(2)為了處理重複元素的情形,將map替換為multimap資料結構;
(3)對統計後的multimap進行遍歷, 將對應的第幾大放到對應的位置,注意處理重複的情形即可;
class
solution);
} vector<
int>
res(arr.
size()
);int pos=1;
auto it=mp.
begin()
;//遍歷統計後的multimap
while
(it!=mp.
end())
++pos;
}return res;}}
;
1331 陣列序號轉換
給你乙個整數陣列 arr 請你將陣列中的每個元素替換為它們排序後的序號。序號代表了乙個元素有多大。序號編號的規則如下 序號從 1 開始編號。乙個元素越大,那麼序號越大。如果兩個元素相等,那麼它們的序號相同。每個數字的序號都應該盡可能地小。示例 1 輸入 arr 40,10,20,30 輸出 4,1,...
1331 陣列序號轉換
給你乙個整數陣列 arr 請你將陣列中的每個元素替換為它們排序後的序號。序號代表了乙個元素有多大。序號編號的規則如下 序號從 1 開始編號。乙個元素越大,那麼序號越大。如果兩個元素相等,那麼它們的序號相同。每個數字的序號都應該盡可能地小。示例 1 輸入 arr 40,10,20,30 輸出 4,1,...
1331 陣列序號轉換
1331.陣列序號轉換 給你乙個整數陣列arr,請你將陣列中的每個元素替換為它們排序後的序號。序號代表了乙個元素有多大。序號編號的規則如下 示例 1 輸入 arr 40,10,20,30 輸出 4,1,2,3 解釋 40 是最大的元素。10 是最小的元素。20 是第二小的數字。30 是第三小的數字。...