假设我有三个长度相等的数组a、b和c。每个数组的元素来自一个全序集,但未排序。我还有两个索引变量i和j。对于所有的i != j,我想计算出满足a[i] < a[j]、b[i] > b[j]和c[i] < c[j]的索引对数量。是否有任何方法可以在小于O(N ^ 2)的时间复杂度内完成这个任务,例如通过创造性地使用排序算法?
注:这个问题的灵感是,如果你只有两个数组a和b,你可以找到索引对的数量,使得a[i] < a[j]和b[i] > b[j] 用归并排序在O(N log N)中。我基本上正在寻找三个数组的概括。
为简单起见,您可以假设任何数组的两个元素都不相等(没有平局)。
注:这个问题的灵感是,如果你只有两个数组a和b,你可以找到索引对的数量,使得a[i] < a[j]和b[i] > b[j] 用归并排序在O(N log N)中。我基本上正在寻找三个数组的概括。
为简单起见,您可以假设任何数组的两个元素都不相等(没有平局)。
a
、b
和c
中所有元素的数组? - David Weiser