leetcode-1331-数组序号转换

it2026-08-15  10

思路:

找到数组中的最小值min,最大值max;申请一个数组count其大小为[max-min+1],该数组用来对题目中的数组进行排序,其中存储的内容是题目所给数组中元素的顺序;count数组的构造方法是:从第一位开始每一位中存储自己的顺序,所以其后面一位元素就可以根据前一位的顺序来得到自己的顺序。将count中的内容转移到结果数组res中 class Solution { public int[] arrayRankTransform(int[] arr) { int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE; for(int num : arr){ //找最大最小值 if(num < min) min = num; if(num > max) max = num; } int[] count = new int[max-min+1]; //最多存在 max-min+1 个不同元素 for(int num : arr) count[num-min] = 1; //初次遍历,找到存在的元素 for(int i = 1; i < count.length; i++){ //二次遍历,对存在的元素进行排序 count[i] = count[i-1] + count[i]; } int[] res = new int[arr.length]; for(int i = 0; i < arr.length; i++){ res[i] = count[arr[i]-min]; //count数组存放着对应的排序后索引 } return res; } }
最新回复(0)