概述
题目
对一个整数数组,将数组中的元素替换成它们排序(从大到小排序)后的序号,规定序号从4开始编号(包括4)并依次递增(元素相等则序号相等),返回这个数组
例子
input: [4,2,3,1]
output:[4,6,5,7]
图片分析
public class Question1 {
public static void main(String[] args) {
int[] arr = new int[]{4, 2, 3, 1};
Question1 q = new Question1();
int[] nums = q.method(arr);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public int[] method(int[] nums) {
int[] arr = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
arr[i] = nums[i];
}
//排序 从大到小
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
int x = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = x;
}
}
}
//定义一个数组qqq 存放arr中元素的次序
int[] qqq = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
//qqq中第一个元素 值为4
if (i == 0) {
qqq[i] = i + 4;
} else {
//arr中第i个元素 与i-1个元素 相等,则qqq中 第i个元素 = 第i-1个元素
if (arr[i] == arr[i - 1]) {
qqq[i] = qqq[i - 1];
}
//否则 qqq中第i个元素值 = qqq中第i-1个元素值 + 1
else {
qqq[i] = qqq[i - 1] + 1;
}
}
}
//键值对存放数组元素 和 其对应次序
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
map.put(arr[i], qqq[i]);
}
for (int i = 0; i < nums.length; i++) {
int x = map.get(nums[i]);
nums[i] = x;
}
return nums;
}
}
最后
以上就是甜美奇异果为你收集整理的MetaApp后端笔试算法题的全部内容,希望文章能够帮你解决MetaApp后端笔试算法题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复