【发布时间】:2020-12-25 06:45:36
【问题描述】:
int array1[] = {1,2,3,4,5};
int array2[] = {5,4,3,2,1};
if (std::equal(std::begin(array1), std::end(array1), std::begin(array2)))
cout << "Arrays are equal.";
else
cout << "Arrays are not equal.";
现在两个数组都是相等的,但是一个是升序的,另一个是降序的,所以这段代码的输出是“Arrays are not equal”,我们如何输出“Arrays are equal”?
【问题讨论】:
-
你应该在比较之前对它们进行排序
-
@zhisme 这可以在线性时间内完成,无需修改数据。您可以在比较它们之前以线性时间反转其中一个数组,但这不是必需的,也可能是不可取的。排序更没有意义,它需要更多的工作。