【发布时间】:2021-06-11 03:04:21
【问题描述】:
我知道已经有类似的问题(1、2、3),但它们都在 Python 中,不符合我的需要。
给定两个排序列表,例如 1, 6, 13, 21, 28 和 2, 15, 20。返回第一个数组中最接近数字的索引,不重复(与上面的链接 1 不同),在本例中为 0, 2, 3。
棘手的一点是,在1, 4, 66, 67, 68, 71 和68, 68, 68, 82, 82 的情况下,返回2, 3, 4, 5, 1 比1, 2, 3, 4, 5 更可取。
第一个列表的长度可能1, 7, 11 和 6, 24, 28, 32, 34 应该返回 0, 1, 2, X, X,其中 X 可以是 0、1 和 2 以外的任何整数。(0, 1, 2, -1, -1 和 0, 1, 2, 3, 4 都可以接受。)
编辑:只需交换两个列表并返回0, 1, 2。
最好使用类 C 语言或伪代码给出的代码。
有什么比蛮力搜索更好的方法吗?
编辑
给定的示例可能不是最佳解决方案,例如最后的(删除线)示例可以返回 1, 0, 2 (1, 0, 2, X, X)。
【问题讨论】: