Joh*_*ohn 5 algorithm performance time-complexity
这是我在采访中被问到的一个问题:
实现一个获得整数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];
Run Code Online (Sandbox Code Playgroud)
说它是O(1)运行时+空间复杂性,如果我们有大数而不是3和,它怎么可能是无效的7.
然后采访者说:"如果你不能使用阵列怎么办?" - 在这里我被卡住了
好像有第四种方式......有什么建议吗?
怎么样
def foo(n)
return 10 - n
end
foo(3) => 7
foo(7) => 3
Run Code Online (Sandbox Code Playgroud)
这个怎么样
function myfunc(n) {
return 21 / n
}
console.log(myfunc(7))
console.log(myfunc(3))Run Code Online (Sandbox Code Playgroud)
更新:#2解决方案
function myfunc(n) {
return "37".replace(n, "")
}
console.log(myfunc(7))
console.log(myfunc(3))Run Code Online (Sandbox Code Playgroud)