如果你得到7则返回3的所有方式,反之亦然 - 面试问题

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.

然后采访者说:"如果你不能使用阵列怎么办?" - 在这里我被卡住了

好像有第四种方式......有什么建议吗?

dfe*_*ens 8

怎么样

def foo(n)
  return 10 - n
end


foo(3) => 7
foo(7) => 3
Run Code Online (Sandbox Code Playgroud)

  • 大声笑我们正在考虑使用数学计算 (2认同)

Chr*_*ius 7

这个怎么样

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)