Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 数组中的4个值,总和=x_Algorithm_Time Complexity_Analysis - Fatal编程技术网

Algorithm 数组中的4个值,总和=x

Algorithm 数组中的4个值,总和=x,algorithm,time-complexity,analysis,Algorithm,Time Complexity,Analysis,我不需要这个代码。我想知道是否有人可以演示如何在一个大小为n的数组中找到4个整数,该数组的时间复杂度等于x。我试着寻找视频,但发现很难跟上。据我所知,您创建了一个包含所有可能对的助手数组?对它们进行排序,然后从较小的数组中找到x的和 例如数组={1,3,4,5,6,9,4} 有没有人能分步解释一下如何检查总数,比如说8。只需要帮助将此过程可视化 #您的输入数组“df”和搜索的和“x” df=[1,3,4,5,6,9,4] x=12 def FindSumoff四(df,x): #创建所有对的字典

我不需要这个代码。我想知道是否有人可以演示如何在一个大小为n的数组中找到4个整数,该数组的时间复杂度等于x。我试着寻找视频,但发现很难跟上。据我所知,您创建了一个包含所有可能对的助手数组?对它们进行排序,然后从较小的数组中找到x的和

例如数组={1,3,4,5,6,9,4} 有没有人能分步解释一下如何检查总数,比如说8。只需要帮助将此过程可视化

#您的输入数组“df”和搜索的和“x”
df=[1,3,4,5,6,9,4]
x=12
def FindSumoff四(df,x):
#创建所有对的字典键(作为对的和)值(“df”的索引对)
myDict={(df[i]+df[j]):[i,j]表示范围(0,len(df))中的i,表示范围(i,len(df))中的j,如果不是i==j}
#验证“x”-键“k”是否也是字典“myDict”中的键,
#如果是这样,我们只需要验证指数是否不同
对于myDict.keys()中的k:
如果myDict.keys()中的x-k未设置(myDict[k])&设置(myDict[x-k]):
返回[df[myDict[k][0]、df[myDict[k][1]、df[myDict[x-k][0]、df[myDict[x-k][1]]
返回[]
解决方案=FindSumoff四(df,x)
打印(解决方案)
注意,此方法遵循(注释)的描述,并在您的示例中进行了更详细的解释


注2:运行时为O(n^2 log n),因为映射/字典中的插入和查找操作通常为O(log n)。

为什么不是O(n^2)?将所有
n(n-1)/2
对的和放在一个映射中,然后在映射的键(和)上迭代,看看
target-key
是否作为键存在于映射中(并且列表元素,它们是作为键存储在映射中的和的值,不重叠)。真不错!一个小注释是,map/dict通常有一个对数插入或至少有一个查找时间。所以总的来说,我们需要O(n^2 logn)时间和二次空间。如果你在浏览器中搜索“目标和问题”,你会找到比我们在这里能处理得更好的参考资料。谢谢你的通知,我更正了我的错误。