当前位置:网站首页>1331. 数组序号转换 : 简单模拟题
1331. 数组序号转换 : 简单模拟题
2022-07-28 11:31:00 【宫水三叶的刷题日记】
题目描述
这是 LeetCode 上的 1331. 数组序号转换 ,难度为 简单。
Tag : 「模拟」、「哈希表」、「排序」
给你一个整数数组 arr,请你将数组中的每个元素替换为它们排序后的序号。
序号代表了一个元素有多大。序号编号的规则如下:
序号从 开始编号。 一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。 每个数字的序号都应该尽可能地小。
示例 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]
提示:
模拟
根据题意进行模拟即可。
对 arr 进行拷贝操作得到新数组 clone,对 clone 数组进行排序,再使用哈希表记录元素与序号的映射关系,最后根据映射关系构造答案。
Java 代码:
class Solution {
public int[] arrayRankTransform(int[] arr) {
int[] clone = arr.clone();
Arrays.sort(clone);
Map<Integer, Integer> map = new HashMap<>();
int n = arr.length, idx = 0;
for (int i : clone) {
if (!map.containsKey(i)) map.put(i, ++idx);
}
int[] ans = new int[n];
for (int i = 0; i < n; i++) ans[i] = map.get(arr[i]);
return ans;
}
}
TypeScript 代码:
function arrayRankTransform(arr: number[]): number[] {
let clone = new Array<number>()
for (const i of arr) clone.push(i)
clone.sort((a,b)=>a-b)
let n = arr.length, idx = 0
let map = new Map<number, number>()
for (const i of clone) {
if (!map.has(i)) map.set(i, ++idx)
}
let ans = new Array<number>()
for (let i = 0; i < n; i++) ans.push(map.get(arr[i]))
return ans
};
时间复杂度: 空间复杂度:
最后
这是我们「刷穿 LeetCode」系列文章的第 No.1331 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。
在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。
为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode 。
在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地
边栏推荐
- Distributed timer
- 行业落地呈现新进展 | 2022 开放原子全球开源峰会 OpenAtom OpenHarmony 分论坛圆满召开
- 要想组建敏捷团队,这些方法不可少
- 用C语言开发NES游戏(CC65)02、什么是v-blank?
- Developing NES game (cc65) 07 and controller with C language
- SQL injection LESS18 (header injection + error injection)
- Force buckle 7_ 1672. Total assets of the richest customers
- 8000 字讲透 OBSA 原理与应用实践
- Huawei releases harmonyos 3 and all scene new products, and the smart experience goes further
- 2022.07.11 summer training personal qualifying (VI)
猜你喜欢

IRBuilder

Using Arduino to develop esp8266 to build a development environment

Image filter from the perspective of convolution

用C语言开发NES游戏(CC65)09、滚动

Test platform (V) knowledge points supplement

Gecko competition 2.0 is new! Come and show your flexible operation skills!

How does musk lay off staff?

Huawei releases harmonyos 3 and all scene new products, and the smart experience goes further

Tencent two sides: @bean and @component are used in the same class, what will happen?

Idea replication module
随机推荐
Full resolution of the use of go native plug-ins
Developing NES game (cc65) 07 and controller with C language
华为发布HarmonyOS 3及全场景新品,智慧体验更进一步
Huawei releases harmonyos 3 and all scene new products, and the smart experience goes further
Develop NES game (cc65) 07 and controller with C language (collision with spirit)
Detailed deployment and configuration of CEPH cluster (II)
Google Earth engine (GEE) -- problems in the use of coordinate projection and reduceresolution functions in image downscaling
Open source database innovation in the era of digital economy | the 2022 open atom global open source summit database sub forum was successfully held
卸载 Navicat:正版 MySQL 官方客户端,真香!
Image filter from the perspective of convolution
SQL注入 Less24(二次注入)
Let Arduino support nuvotom Xintang
[real question of written examination]
Developing NES games with C language (cc65) 11. Metatiles
IDEA复制模块
用C语言开发NES游戏(CC65)07、控制器
Anhui Jingzhun: Beidou satellite synchronous clock | Beidou synchronous clock | NTP network clock server
用C语言开发NES游戏(CC65)09、滚动
PHP timestamp subtraction converts to days, hours, minutes and seconds
"Weilai Cup" 2022 Niuke summer multi school training camp 2