您在 Javascript 中有此代码(即使语言选择无关紧要):
var arr = new Array(101);
for (skip = 1; skip <= 100; skip++) {
for (i = 0; i <= 100; i+= skip) {
arr[i] = !arr[i];
}
}
显然,这段代码运行后,数组中会有一堆真假值。如果 arr[i] 被触摸了偶数次,则为假,否则为真。
问题是这些价值形成了什么样的模式?你能快速判断 arr[15] 是真还是假?arr[81] 呢?
我知道答案(当 x 是某个整数的平方时,arr[x] 为真),但我不明白我应该如何在面试中快速得出答案?
额外的问题是这段代码的时间复杂度是多少,假设您对 N 个数组元素执行此操作(我将在下面回答)?