这是我在面试中被问到的一个问题:
实现一个获取整数 n 并执行以下操作的函数:
1. 如果 n 为 3 -> 返回 7。
2. 否则如果 n 是 7 -> 返回 3。
3.否则返回你喜欢的任何数字(未定义的行为)。
还描述了每种方式的运行时间和空间复杂度。
所以首先我给出了使用 if-else 语句的简单方法 - 并说它是 O(1)
运行时 + 空间复杂度。然后面试官说:“如果你不能使用if语句怎么办(包括switch-case和其他if语句的相似之处)?”
所以我建议使用按位运算:return n^=4
。据说它是 O(1)
运行时 + 空间复杂度。然后面试官说:“如果你不会用位运算怎么办?”
所以我建议使用这样的数组:
int mem[8] = {-1, -1, -1, 7, -1, -1, -1, 3};
return mem[n];
说它是 O(1)
运行时复杂度 + 空间复杂度,但是如果我们有大数而不是 3
和 可能效率不高7
。
然后面试官说:“如果你不会用数组怎么办?” - 在这里我被困住了。
似乎还有第四种方法……有什么建议吗?
最佳答案
怎么样
def foo(n)
return 10 - n
end
foo(3) => 7
foo(7) => 3
关于algorithm - 如果你得到 7 则返回 3 的所有方法,反之亦然 - 面试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523148/