相关疑难解决方法(0)

如果你得到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];               
Run Code Online (Sandbox Code Playgroud)

说它是O(1)运行时+空间复杂性,如果我们有大数而不是3和,它怎么可能是无效的7.

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

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

algorithm performance time-complexity

5
推荐指数
2
解决办法
144
查看次数

标签 统计

algorithm ×1

performance ×1

time-complexity ×1