Map <integer,list <string =“”>&gt;?</integer,>的空间复杂度是多少?

时间:2013-09-16 04:46:49

标签: java map big-o

我尝试用Java计算代码的空间复杂度,我只使用地图和列表,但我不确定它是O(n^2)还是O(n),为什么?

Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
List<String> list = new ArrayList<String>();;
Map<String, Integer> map = new HashMap<String,Integer>() ;

通常,另一个数据结构中的数据结构通常是O(n ^ 2)对吗?

谢谢

1 个答案:

答案 0 :(得分:0)

定义 n 是什么有用,那么确定空间复杂度相对容易。我将 n 定义为放置在HashMap中的字符串数。我还假设哈希表中的最小加载因子是0.5。设 I 是整数的大小, S 是字符串的最大大小, H 是由单个插槽使用的空间哈希表, L 是哈希表中列表的最大长度。

然后,对于最小填充哈希表,将有 n / L 占用的插槽,每个插槽最多 SL 空间加上分配的密钥。哈希表本身将采用 2Hn / L 空间--- 2是由于加载因子。因此,总空间将是 [(SL + I + 2H)/ L] n ,它只是 O(n)