首页 > 解决方案 > 如果你得到 7 则返回 3 的所有方法,反之亦然 - 面试问题

问题描述

这是我在一次采访中被问到的一个问题:
实现一个获取整数 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)运行时+空间复杂度,如果我们有大量数字而不是3and ,它可能是非效率的7

然后面试官说:“不能用数组怎么办?” - 我在这里卡住了。

似乎有第四种方式......有什么建议吗?

标签: algorithmperformancetime-complexity

解决方案


怎么样

def foo(n)
  return 10 - n
end


foo(3) => 7
foo(7) => 3

推荐阅读