当前位置:网站首页>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 原题链接和其他优选题解。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地
边栏推荐
- Using Arduino to develop esp8266 to build a development environment
- Open source office (ospo) unveils Secrets
- Anhui Jingzhun: Beidou satellite synchronous clock | Beidou synchronous clock | NTP network clock server
- Some API interfaces purchased by Yiwu hope to bring you some help
- 用C语言开发NES游戏(CC65)10、游戏循环
- [leetcode] 8. binary search · binary search
- 用C语言开发NES游戏(CC65)02、什么是v-blank?
- Cache of laravel
- Latex矩阵简单使用
- 安徽京准:北斗卫星同步时钟|北斗同步时钟|NTP网络时钟服务器
猜你喜欢

Come to tdengine Developer Conference and have an insight into the future trend of data technology development

LyScript 获取上一条与下一条指令

分布式定时器

Top level "redis notes", cache avalanche + breakdown + penetration + cluster + distributed lock, Nb

Live: never believe that suffering is worth it. Suffering is suffering

安徽京准:北斗卫星同步时钟|北斗同步时钟|NTP网络时钟服务器

Sub database and sub table may not be suitable for your system. Let's talk about how to choose sub database and sub table and newsql

laravel表单数据验证

Laravel form data validation

Is it difficult for cloud native machine learning to land? Lingqueyun helps enterprises quickly apply mlops
随机推荐
SQL注入 Less24(二次注入)
On Governance and innovation | the openanolis sub forum of the 2022 open atom global open source summit was successfully held
AVL树(平衡搜索树)
Developing NES games (cc65) 05 and palette with C language
Develop NES game (cc65) 07 and controller with C language (collision with spirit)
Localization, low latency, green and low carbon: Alibaba cloud officially launched Fuzhou data center
How does musk lay off staff?
Latex矩阵简单使用
Latex matrix is simple to use
Force deduction solution summary 735 planetary collision
REST风格
Brief discussion on open source OS distribution
Open source database innovation in the era of digital economy | the 2022 open atom global open source summit database sub forum was successfully held
Developing NES games with C language (cc65) 09, scrolling
配置Jupyter远程服务器
Force buckle 7_ 1672. Total assets of the richest customers
IRBuilder
腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?
Style conversion model style_ Transformer project instance pytorch implementation
[try to hack] at, SC, PS command authorization