Java 两个和的空间复杂性
我写了一段两个和的代码:Java 两个和的空间复杂性,java,algorithm,space-complexity,Java,Algorithm,Space Complexity,我写了一段两个和的代码: public static int[] twoSums0(int[] nums, int target){ for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(nums[i] == target-nums[j]){ return new int[]{i,j}; }
public static int[] twoSums0(int[] nums, int target){
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i] == target-nums[j]){
return new int[]{i,j};
}
}
}
throw new IllegalArgumentException("No solution");
}
公共静态int[]twoSums0(int[]nums,int目标){
对于(int i=0;i要计算空间复杂度,必须分析由方法创建的所有对象和基本体的渐进大小。不包括输入的大小
此方法最多创建一个由2个元素组成的数组(除了用于循环索引的2个原语之外)。因此,它需要恒定的空间(即O(1)
空间复杂度)
如果您想使用HashMap
来提高此方法的时间复杂度,我假设您将把输入数组的所有元素添加到该HashMap
,这将需要O(n)
空间。要计算空间复杂度,必须分析由方法创建的所有对象和基本体的渐进大小。不包括输入的大小
此方法最多创建一个由2个元素组成的数组(除了用于循环索引的2个原语之外)。因此,它需要恒定的空间(即O(1)
空间复杂度)
如果要使用HashMap
来提高此方法的时间复杂度,我假设将输入数组的所有元素添加到该HashMap
,这将需要O(n)
空间