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

稻田

我从下面的代码中获得了所有唯一的三元组,但是我想减少它的时间复杂性。它由三个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;
    }
海登

我不是算法的专家,但是我可以看到使您的程序更好的一种方法是binary search对您third loop的值进行求和,以便将您的总和与之前的两个值结合起来。但是,这要求您sorted事先准备好数据以使其正常工作(显然,这取决于您的开销sorting algorithmstd::sort平均时间复杂度为O (n log n)))。

如果您想利用并行编程并让您的程序在多个线程中运行,则始终可以,但是这样做可能会很混乱。

除了这些建议之外,很难想到一种更好的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数组中查找总和为给定值的所有三元组。数组中有重复项

来自分类Dev

如何在PowerShell中找到最短执行时间?

来自分类Dev

如何在PowerShell中找到最短执行时间?

来自分类Dev

找到总和为给定值的每个四元组

来自分类Dev

给定列总和的行对/三元组的顺序

来自分类Dev

给定总和为零的所有连续子数组

来自分类Dev

如何在整数数组中找到总和在给定值范围内的所有有序元素对

来自分类Dev

查找一个numpy数组的所有n-let(对,三元组,四元组等)

来自分类Dev

设置命令的最短执行时间

来自分类Dev

RXjava最短执行时间?

来自分类Dev

在未排序的数字数组中找到具有给定总和的所有对

来自分类Dev

R:计算总和小于给定值的三元组

来自分类Dev

如何在给定目录中找到一段时间后创建的所有文件?

来自分类Dev

良好的SPARQL查询,可找到以资源为主体或对象的所有三元组

来自分类Dev

如何有效地找到数组中三元组之和的最小差异?

来自分类Dev

如何在给定的二叉树中找到最大大小为K的所有根子树?

来自分类Dev

检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

来自分类Dev

检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

来自分类Dev

如何使用递归找到总和为零的数组的所有子集?(在Ruby中)

来自分类Dev

在给定数组中找到给定元素

来自分类Dev

Haskell-有没有办法限制给定功能的执行时间?

来自分类Dev

具有随机数总和的多线程执行时间

来自分类Dev

执行时间

来自分类Dev

Python,在给定的摩尔斯电码中找到所有可能的字母组合

来自分类Dev

在给定的翻转次数中找到特定数量的头和尾的所有组合

来自分类Dev

如何通过Azure DevOps API在给定的板列中找到所有工作项?

来自分类Dev

从对列表创建三元组列表,以便所有三元组子集都存在于对列表中

来自分类Dev

使用LINQ获取所有可能的不同三元组

来自分类Dev

生成三元组中所有可能的数字组合?

Related 相关文章

  1. 1

    在数组中查找总和为给定值的所有三元组。数组中有重复项

  2. 2

    如何在PowerShell中找到最短执行时间?

  3. 3

    如何在PowerShell中找到最短执行时间?

  4. 4

    找到总和为给定值的每个四元组

  5. 5

    给定列总和的行对/三元组的顺序

  6. 6

    给定总和为零的所有连续子数组

  7. 7

    如何在整数数组中找到总和在给定值范围内的所有有序元素对

  8. 8

    查找一个numpy数组的所有n-let(对,三元组,四元组等)

  9. 9

    设置命令的最短执行时间

  10. 10

    RXjava最短执行时间?

  11. 11

    在未排序的数字数组中找到具有给定总和的所有对

  12. 12

    R:计算总和小于给定值的三元组

  13. 13

    如何在给定目录中找到一段时间后创建的所有文件?

  14. 14

    良好的SPARQL查询,可找到以资源为主体或对象的所有三元组

  15. 15

    如何有效地找到数组中三元组之和的最小差异?

  16. 16

    如何在给定的二叉树中找到最大大小为K的所有根子树?

  17. 17

    检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

  18. 18

    检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

  19. 19

    如何使用递归找到总和为零的数组的所有子集?(在Ruby中)

  20. 20

    在给定数组中找到给定元素

  21. 21

    Haskell-有没有办法限制给定功能的执行时间?

  22. 22

    具有随机数总和的多线程执行时间

  23. 23

    执行时间

  24. 24

    Python,在给定的摩尔斯电码中找到所有可能的字母组合

  25. 25

    在给定的翻转次数中找到特定数量的头和尾的所有组合

  26. 26

    如何通过Azure DevOps API在给定的板列中找到所有工作项?

  27. 27

    从对列表创建三元组列表,以便所有三元组子集都存在于对列表中

  28. 28

    使用LINQ获取所有可能的不同三元组

  29. 29

    生成三元组中所有可能的数字组合?

热门标签

归档