计算数组中 a[i] < a[j] > a[k] 的数量的有效算法,其中 i < j < k

普拉琼恩

给出n个元素的排序的数组,如何计算在阵列中出现的次数,使得i < j < ka[i] < a[j] > a[k]O(n log n)时间复杂度。如果可能有更好的时间复杂度,请告诉我。我提出了时间复杂度的算法,O(n^3)处理大的 n 值太慢了。

 count = 0; // count for number of tuples following above condition
    for(i = 0;i < n; i++)
        for(j = i + 1;j < n; j++)
            for(k = j + 1;k < n; k++)
                if(a[i] < a[j] && a[j] > a[k]) 
                   count++;

for example we have an array [1, 2, 3, 1].
Now such occurrences are in index form(0 - based indexing)
[0 1 3]
[0 2 3]
[1 2 3].

做一个在线算法,将整数添加到一个集合中,并二进制搜索小于当前整数的整数个数 A[j]

在正常方向上做一次,在反向上做一次,这样对于每个A[j]你可以存储整数 <A[j]在 / 之前 / 之后的数量j

答案是所有乘积的总和 j

Set<int> st, reverse_st;
int arr[N], reverse_arr[N];
int A[N], ans = 0;

FOR j = 0 to N-1
  arr[j] = # of element in st < A[j], using binary search // O(lg N)
  Insert A[j] into st // O(lg N)

FOR j = N-1 to 0
  reverse_arr[j] = # of element in reverse_st < A[j], using binary search
  Insert A[j] into reverse_st
  
FOR i = 0 to N-1
  ans += arr[i] * reverse_arr[i]

Output ans

使用您的示例 A = [1,2,3,1]

arr = [0,1,2,0],reverse_arr = [0,1,1,0]

年 = 1 * 1 + 2 * 1 = 3

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算lcm(i,j),i和j之和的范围是1到k的最有效方法是什么?

来自分类Dev

查找最大索引j的有效算法,使得索引i至j的总和小于k

来自分类Dev

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

来自分类Dev

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

来自分类Dev

查找所有这样的不同元组(i,j,k)的计数,其中(i * j)%k == 0

来自分类Dev

一种有效的方法来计算数组中某种元素的数量

来自分类Dev

找出所有整数i,j,k> = 0,使得i + j + k <= d?

来自分类Dev

计算数组中相同值的数量

来自分类Dev

如何计算数组中对象的数量?

来自分类Dev

Python 树状图必须有 ak 使得 (k \choose 2)=n)

来自分类Dev

性能最高的方法,用于计算lcm(i,j),i和j的和,范围从1到k

来自分类Dev

i == j == k的意外结果?

来自分类Dev

计算数组中数组中元素的数量

来自分类Dev

有效地计算(a-K)/(a + K)

来自分类Dev

有效计算数组中 N 个最小数字的总和

来自分类Dev

使用JMESPath计算数组中实例的数量

来自分类Dev

如何计算数组中某个元素的数量?

来自分类Dev

计算数组中连续的(1s)数量

来自分类Dev

PHP-计算数组中事物数量的最佳方法

来自分类Dev

计算数组乘法的有效方法

来自分类Dev

从循环索引k获得i <j?

来自分类Dev

如何在Numpy / Theano中表达c [i,j,k] = a [i,j] * b [i,k]?

来自分类Dev

设计一种用于计算数组A nxn中1的数量的算法

来自分类Dev

尴尬的数组ak.unzip行为

来自分类Dev

给定数组A和数K,创建数组B,其中B [i] = min(A [i],A [i + 1] .. A [i + K-1])

来自分类Dev

给定数组A和数K,创建数组B,其中B [i] = min(A [i],A [i + 1] .. A [i + K-1])

来自分类Dev

JavaScript中是否有一种有效的算法来查找较大数组集中不同数组的数量?

来自分类Dev

多个嵌套的for循环仅在R中的i = j = k索引下迭代

来自分类Dev

生成范围(i,j)之间的核苷酸k-mers的所有组合

Related 相关文章

  1. 1

    计算lcm(i,j),i和j之和的范围是1到k的最有效方法是什么?

  2. 2

    查找最大索引j的有效算法,使得索引i至j的总和小于k

  3. 3

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

  4. 4

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

  5. 5

    查找所有这样的不同元组(i,j,k)的计数,其中(i * j)%k == 0

  6. 6

    一种有效的方法来计算数组中某种元素的数量

  7. 7

    找出所有整数i,j,k> = 0,使得i + j + k <= d?

  8. 8

    计算数组中相同值的数量

  9. 9

    如何计算数组中对象的数量?

  10. 10

    Python 树状图必须有 ak 使得 (k \choose 2)=n)

  11. 11

    性能最高的方法,用于计算lcm(i,j),i和j的和,范围从1到k

  12. 12

    i == j == k的意外结果?

  13. 13

    计算数组中数组中元素的数量

  14. 14

    有效地计算(a-K)/(a + K)

  15. 15

    有效计算数组中 N 个最小数字的总和

  16. 16

    使用JMESPath计算数组中实例的数量

  17. 17

    如何计算数组中某个元素的数量?

  18. 18

    计算数组中连续的(1s)数量

  19. 19

    PHP-计算数组中事物数量的最佳方法

  20. 20

    计算数组乘法的有效方法

  21. 21

    从循环索引k获得i <j?

  22. 22

    如何在Numpy / Theano中表达c [i,j,k] = a [i,j] * b [i,k]?

  23. 23

    设计一种用于计算数组A nxn中1的数量的算法

  24. 24

    尴尬的数组ak.unzip行为

  25. 25

    给定数组A和数K,创建数组B,其中B [i] = min(A [i],A [i + 1] .. A [i + K-1])

  26. 26

    给定数组A和数K,创建数组B,其中B [i] = min(A [i],A [i + 1] .. A [i + K-1])

  27. 27

    JavaScript中是否有一种有效的算法来查找较大数组集中不同数组的数量?

  28. 28

    多个嵌套的for循环仅在R中的i = j = k索引下迭代

  29. 29

    生成范围(i,j)之间的核苷酸k-mers的所有组合

热门标签

归档