Java 对于可能包含大小为n和大小为n的数组的映射,空间复杂度是多少
我有一个名为Java 对于可能包含大小为n和大小为n的数组的映射,空间复杂度是多少,java,arrays,algorithm,sorting,data-structures,Java,Arrays,Algorithm,Sorting,Data Structures,我有一个名为int[]afterClassification(int[]nums)的函数,它根据nums数组的大小对数组中的元素进行分类。对于例如:nums=[7,9,8],返回[1,3,2] (7是最小值,因此其等级为1;9是最大值,因此其等级为3;8是第二大值,因此其分类为2) 我为此实现了一个代码: publicstaticint[]afterClassification(int[]nums){ int length=nums.length; int[]结果=新的int[长度]; int[
int[]afterClassification(int[]nums)
的函数,它根据nums数组的大小对数组中的元素进行分类。对于例如:nums=[7,9,8],返回[1,3,2]
(7是最小值,因此其等级为1;9是最大值,因此其等级为3;8是第二大值,因此其分类为2)
我为此实现了一个代码:
publicstaticint[]afterClassification(int[]nums){
int length=nums.length;
int[]结果=新的int[长度];
int[]clonedArray=nums.clone();
排序(clonedArray);
Map Map=newhashmap();
int秩=0;
for(整数编号:clonedArray){
如果(!map.containsKey(编号)){
秩+=1;
地图放置(编号、等级);
}
}
对于(inti=0;i空间复杂度为O(n),时间O(n*logn)是因为排序,这是问题吗?空间复杂度仍然是O(n)即使您有两个数据结构保存数据。顺便说一句,您的算法在分类最小、最大等方面不正确。它只获取数组中元素的顺序。如果输入是[7,9,8,7]
@Rocco,结果会是什么?我的问题是只知道空间复杂度空间复杂度是O(n),正如您正确指出的,映射最多为N,两个数组各为N,因此总数为