gpt4 book ai didi

c++ - 在给定数组中找到所有唯一的三元组,总和为零,执行时间最短

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:17 25 4
gpt4 key购买 nike

<分区>

我从下面的代码中得到了所有独特的三元组,但我想减少它的时间复杂。它由三个 for 循环组成。所以我的问题是:是否有可能以最少的循环次数来降低时间复杂度?

提前致谢。让我知道。

   #include <cstdlib>
#include<iostream>
using namespace std;
void Triplet(int[], int, int);
void Triplet(int array[], int n, int sum)
{
// Fix the first element and find other two
for (int i = 0; i < n-2; i++)
{
// Fix the second element and find one
for (int j = i+1; j < n-1; j++)
{
// Fix the third element
for (int k = j+1; k < n; k++)
if (array[i] + array[j] + array[k] == sum)
cout << "Result :\t" << array[i] << " + " << array[j] << " + " << array[k]<<" = " << sum << endl;
}
}
}

int main()
{
int A[] = {-10,-20,30,-5,25,15,-2,12};
int sum = 0;
int arr_size = sizeof(A)/sizeof(A[0]);
cout<<"********************O(N^3) Time Complexity*****************************"<<endl;
Triplet(A,arr_size,sum);
return 0;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com