数组排序
1331. 数组序号转换
难度简单85
给你一个整数数组 arr
,请你将数组中的每个元素替换为它们排序后的序号。
序号代表了一个元素有多大。序号编号的规则如下:
- 序号从 1 开始编号。
- 一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。
- 每个数字的序号都应该尽可能地小。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
0 <= arr.length <= 105
-109 <= arr[i] <= 109
题解
- 首先使用克隆
clone
复制原数组 - 对克隆的数组进行排序
- 遍历排序后的克隆数组,将对应元素的值作为键,顺序作为值放进哈希表
HashMap
中 - 然后遍历原数组,在哈希表
HashMap
中查找对应的元素,将顺序放在另一个数组中,返回该数组
1 |
|
- 时间复杂度:$O(n\log n)$ ,其中排序花费 $O(n \times \log n)$ 时间
- 空间复杂度:$O(n)$
1331数组序号转换
http://example.com/2022/07/28/leetcode每日一题/1331.数组序号转换/