C++ 给定一个包含正整数和负整数的数组,如何计算乘积等于给定值的对数

C++ 给定一个包含正整数和负整数的数组,如何计算乘积等于给定值的对数,c++,C++,我能够在O(n^2)复杂度下完成这项工作。但我想知道一个更好的解决办法。我读过关于分配两个索引的开始和结束,并用给定的值检查它们的乘积,但这不适用于包含负整数的数组 为什么不将数组分为两个数组(一个为正值,一个为负值),并应用相同的或多或少的解决方案?@ALX23z是的,这听起来不错。不要忘记当clvalue为负值时的情况。允许对“数组”进行排序吗或者使用一个关联标准容器,如std::unordered_map?数字上有上限还是下限?如果n远大于可能的最大值,您可以:(1)对数组进行排序(nlo

我能够在O(n^2)复杂度下完成这项工作。但我想知道一个更好的解决办法。我读过关于分配两个索引的开始和结束,并用给定的值检查它们的乘积,但这不适用于包含负整数的数组

为什么不将数组分为两个数组(一个为正值,一个为负值),并应用相同的或多或少的解决方案?@ALX23z是的,这听起来不错。不要忘记当
clvalue
为负值时的情况。允许对“数组”进行排序吗或者使用一个关联标准容器,如
std::unordered_map
?数字上有上限还是下限?如果n远大于可能的最大值,您可以:(1)对数组进行排序(nlogn),(2)将i从-sqrt(clvalue)迭代到+sqrt(clvalue),检查clvalue/i是否存在。