algorithm - 如果你得到 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)
运行时+空间复杂度,如果我们有大量数字而不是3
and ,它可能是非效率的7
。
然后面试官说:“不能用数组怎么办?” - 我在这里卡住了。
似乎有第四种方式......有什么建议吗?
解决方案
怎么样
def foo(n)
return 10 - n
end
foo(3) => 7
foo(7) => 3
推荐阅读
- r - 如何将某些项目从长列表转换为 R 中的数据框?
- deep-learning - 语义分割数据集组织
- javascript - 如何在 JavaScript 或 Angular 中为 firefox 获取 window.browser 对象?
- java - 如何获得加载数据以停止闪烁的时间?
- c# - Word 互操作 - 将嵌入的形状另存为图像
- gmail - 已发布的 Gmail 附加组件未显示在移动 Gmail 应用程序上
- c - C 中的函数针对一组值运行,但给出 Segmentation Fault: 11 for another
- matlab - 如何减少从一组矩阵和向量中提取的特征以用于 MATLAB 中的机器学习
- c++ - pytorch / libtorch C++ 中的自定义子模块
- python - 如何获取特定的外键值