当前位置:网站首页>1331. 数组序号转换 : 简单模拟题
1331. 数组序号转换 : 简单模拟题
2022-07-28 22:26: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 原题链接和其他优选题解。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地
本文由 mdnice 多平台发布
边栏推荐
- #{}和${}的区别
- 【微服务~Nacos】Nacos服务提供者和服务消费者
- Sword finger offer 64. find 1+2+... +n, logical operator short circuit effect
- Develop effective Tao spell
- Redis learning notes
- Samsung asset management (Hong Kong) launched yuancosmos ETF to focus on investing in the future tuyere track
- Web系统常见安全漏洞介绍及解决方案-CSRF攻击
- Attack and defense world web master advanced area php2
- 动态规划问题(八)
- Applet editor rich text editing and rich text parsing
猜你喜欢

Why is it so difficult for the SEC to refuse the application for transferring gray-scale GBTC to spot ETF? What is the attraction of ETF transfer?

How NAT configures address translation

Software designer - intermediate, exam summary

【MySQL系列】MySQL数据库基础

SQL实现将多行记录合并成一行

Plato farm is expected to further expand its ecosystem through elephant swap

Eye of depth (18) -- partial derivative

Leetcode61. rotating linked list

Doip communication of canoe application case

Samsung asset management (Hong Kong) launched yuancosmos ETF to focus on investing in the future tuyere track
随机推荐
@Transactional 注解使用详解
Redis learning notes
Laptop external display
Dual for loop optimization
Why is it so difficult for the SEC to refuse the application for transferring gray-scale GBTC to spot ETF? What is the attraction of ETF transfer?
Eye of depth (18) -- partial derivative
vscode下链接远程服务器安装插件失败、速度慢等解决方法
【微服务】Nacos集群搭建以及加载文件配置
1-7 solve the problem of this pointing of methods in classes
SQL implementation merges multiple rows of records into one row
Event extraction and documentation (2008-2017)
@PostConstruct注解详解
“Method Not Allowed“,405问题分析及解决
1-8 basic use of props
[MySQL series] MySQL database foundation
IDEA报错Error running ‘Application‘ Command line is too long解决方案
Have passed hcip and joined the company of your choice, and share the learning experience and experience of Huawei certification
[small bug diary] Navicat failed to connect to MySQL | MySQL service disappeared | mysqld installation failed (this application cannot run on your computer)
Feign call fails. JSON parse error illegal character ((ctrl-char, code 31)) only regular white space (R
JS advanced ES6 ~ es13 new features