我有一个整数数组(正数和负数),表示空间中的点,两点之间的距离定义为abs(A[i]-A[j]),我需要检查该距离是否可被给定的整数M整除。
所以现在的情况是这样的:
数组:[-3 -2 1 0 8 7 1]
M=3
abs(A[1]-A[2])=3(例如,它可以被整数整除)
复杂度应为O(N+M),空间复杂度为O(M)
现在这些是问题
1)我知道有一种方法可以考虑所有的情侣,而不使用两个“for循环”的显然解决方案,因为复杂度将是N^2,这是不可取的,但我想不出如何做到
2)复杂度O(N+M)意味着我需要使用两个for循环,但不是一个内嵌另一个吗?(我的意思是两个单独的for循环),我试图在这里理解的是,给定的复杂度是否可以引导我应该使用的最佳算法。
3)当规格说明整数名为M且复杂度为O(N+M)时,这是否意味着整数M与复杂度之间存在关系,还是只是名称相同的情况?
4)如何做到这一点?
我希望我表达得足够清楚,如果不是,请让我知道,我会尽力解释。
好吧,让我们看看我是否正确理解了我的问题,我正在尝试以下方法:
int testCollection[7];
testCollection[0] = -3;
testCollection[1] = -2;
testCollection[2] = 1;
testCollection[3] = 0;
testCollection[4] = 8;
testCollection[5] = 7;
testCollection[6] = 1;
int arrayCollection[7];
for (unsigned int i = 0; i < 7; i++)
{
arrayCollection[i] = 1000;
}
for (unsigned int i = 0; i < 7; i++)
{
arrayCollection[i] = testCollection[i]%3;
}
数组集合现在包含:[0,-2,1,0,2,1,1]
我不太明白你的意思,请再具体一些。可以像对待孩子一样解释吗?
如果你想了解更多信息,可以查看相关文档。抱歉,我无法提供链接。