[英]Determine if two unsorted (short) arrays share the same elements?
给定两个未排序的 arrays A
和B
具有相同数量的不同元素(正整数> 0),确定 A 和 B 是否可以重新排列以使它们相同。
我不想实际重新排列元素,只需执行快速且廉价的检查(如果可能)(我需要在大量此类数组上执行此操作)。
我正在考虑根据元素的总和和乘积进行检查。 即,如果 1. 和 2. 为真,则 A 和 B 可以重新排列以使它们相同:
a_1+a_2+...+a_n = b_1+b_2+...+b_n
a_1*a_2*...*a_n = b_1*b_2*...*b_n
然而,这种方法的数学基础对我来说似乎是不稳定的。 有没有类似的证明,在数学上更严格?
根据 Vieta 公式,n 个数字的总和和乘积是具有这些数字的多项式的第二个和最后一个系数(对于符号的变化)。 其他系数保持自由,为不同的数字留下了许多可能性。
例如总和 = 3,产品 = 4。
多项式 x³-3x²-21x-4 的根为 -3.19、-0.19634、6.3863。
多项式 x³-3x²-12x-4 的根为 -2、-0.37228、5.3723。
这两个不同的三元组具有所需的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.