当前位置:网站首页>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 多平台发布
边栏推荐
- Software designer - intermediate, exam summary
- 【微服务】Nacos集群搭建以及加载文件配置
- “Method Not Allowed“,405问题分析及解决
- 动态规划问题(一)
- vscode下链接远程服务器安装插件失败、速度慢等解决方法
- Oracle super full SQL, details crazy
- Web系统常见安全漏洞介绍及解决方案-CSRF攻击
- Advanced area of attack and defense world web masters warmup
- Leetcode64. Minimum path sum
- Using recursion and chain header interpolation to realize the group turnover of linked lists -- leetcode25 K group turnover linked lists
猜你喜欢

MySQL installation and configuration tutorial (super detailed, nanny level)

Servlet operation principle_ API details_ Advanced path of request response construction (servlet_2)

Leetcode61. rotating linked list

【C】 Replace spaces and realize binary parity bit exchange of integers by macros

动态规划问题(五)

flyway的快速入门教程

Advanced area of attack and defense world web masters unserialize3

Advanced area of attack and defense world web masters training www robots

Es6操作教程

Virtual lab basic experiment tutorial -8. Fourier transform (1)
随机推荐
centos7安装mysql8
IDEA 连接 数据库
Android studio连接MySQL并完成简单的登录注册功能
vulnhub:BTRSys2
Leetcode59. Spiral matrix II
Applet waterfall flow, upload pictures, simple use of maps
Detailed explanation of 9 common reasons for MySQL index failure
Cmake basic learning
Applet verification code login
Install MySQL using Yum for Linux
Leetcode 763. partition labels divide alphabetic intervals (medium)
Develop effective Tao spell
MySQL安装配置教程(超级详细、保姆级)
Locally connect to redis on Windows Server
MySql中的like和in走不走索引
【微服务~Nacos】Nacos服务提供者和服务消费者
Table custom style row class name in elemenui
[applet project development -- JD mall] uni app commodity classification page (first)
Servlet operation principle_ API details_ Advanced path of request response construction (servlet_2)
Web系统常见安全漏洞介绍及解决方案-sql注入