arrays - 将 'n' 锁与 'n' 键匹配
问题描述
有 n 个外观相同的锁和 n 个不同的钥匙。每把锁只能用给定钥匙中的一把钥匙打开。匹配每个锁键对。
我已经用蛮力方法 O(n^2) 解决了这个问题,但我想知道是否有有效的解决方案来解决这个问题。
解决方案
请检查这是否有帮助-
1)快速排序方式Θ(nlogn):可以应用快速排序技术来解决。
为了理解逻辑,问题可以简化为具体细节。
// 选择枢轴(可以是最后一个或任何元素)进行分区。枢轴=分区(锁,低,高,keys_pivot);
// Now use returned pivot to partition keys -
// As key/lock should be at same index
partition(keys, low, high, locks_pivot[pivot]);
matchPairs(keys, locks, low, pivot-1);
matchPairs(keys, locks, pivot+1, high);
例如, https://www.geeksforgeeks.org/nuts-bolts-problem-lock-key-problem/
2)散列函数O(n):
Add all locks to HashMap<> / plain array
Iterate over keys to find a matching pair
例如, https://www.geeksforgeeks.org/nuts-bolts-problem-lock-key-problem-set-2-hashmap/
推荐阅读
- mysql - SQL:连接多个表
- xamarin - 有没有办法可以覆盖 XF 中标签的文本属性?
- javascript - 限制可以选择的项目数
- java - 使用 SimpleJdbcCall 将输入值作为 1525 传递给 oracle 过程时出错
- javascript - 将没有 api 的 Instagram 主题标签 json 放入谷歌表格的问题
- network-monitoring - 如何设置 Netdata 来监控我的网站性能?
- scikit-learn - 如何知道 NLP 模型中与特定类相关的单词?
- python - Jupyter Notebook (Python 3) 中的错误 - TclError: no display name and no $DISPLAY environment variable
- python - 引用该变量的程序中的错误在声明之前使用
- typescript - 打字稿中常量类型的最佳实践是什么?