你知道怎样以O(1)的时间复杂度获取m个元素组合中的第k个元素吗?期望的解决方案应该适用于任何大小的输入数据和任何m值。
让我通过一个例子(python代码)来解释这个问题:
>>> import itertools
>>> data = ['a', 'b', 'c', 'd']
>>> k = 2
>>> m = 3
>>> result = [''.join(el) for el in itertools.combinations(data, m)]
>>> print result
['abc', 'abd', 'acd', 'bcd']
>>> print result[k-1]
abd
对于给定的数据,m个元素组合中的第k个元素(这个例子中是第二个)是abd。是否可以在不创建整个组合列表的情况下得到该值(abd)?
我之所以问这个问题,是因为我的数据有大约1,000,000个字符,而创建完整的m字符长度组合列表以获取第k个元素是不可能的。
解决方案可以是伪代码,或者是链接到描述此问题的页面(不幸的是,我没有找到这样的页面)。
谢谢!