我正在处理一项任务,但有些问题没有得到答案。
我被问到:
输入:一个长度为 N 的数组 A,它只能包含从 1 到 N 的整数
输出:TRUE - A 包含重复,FALSE - 否则。
我创建了一个通过我的测试用例的类。
public class ArrayOfIntegers {
public boolean isArrayContainsDuplicates(int [] intArray){
int arraySize = intArray.length;
long expectedOutPut = arraySize*(arraySize+1)/2;
long actualOutput = 0;
for(int i =0 ; i< arraySize; i++){
actualOutput = actualOutput + intArray[i];
}
if(expectedOutPut == actualOutput)
return false;
return true;
}
}
现在对此有进一步的问题
是否可以提供答案而不破坏输入数组 A?
我还没有销毁数组。那么我所做的是否正确?
分析算法的时间和空间复杂度?
所以我需要写一些关于 for 循环的东西,一旦我找到重复的元素,我就应该打破循环。坦率地说,我对时间和空间复杂度的概念不是很清楚。
时间和空间都可能是 O(n) 吗?
这应该是否,因为 n 可以是任何数字。同样,我对 O(n) 不是很清楚。
谢谢