我在一次面试中被问到这个问题,我给出了各种解决方案,但面试官并不相信。我有兴趣找到解决方案。请提出您的意见:
问:编写一个高效的数据结构来实现 ipod 中的 shuffle。它必须播放所有歌曲,每次以不同的随机顺序播放,同一首歌曲不应重复。(主要是 O(n))
面试后我想到了一个解决方案:我可以在没有递归的情况下进行随机快速排序。我们随机选择 1 个枢轴 O(1),然后进行快速排序 O(n)。现在歌曲将按某种顺序排序,我将它们播放到最后。一旦到达终点,我将再次选择一个随机枢轴,并一次又一次地重复此过程。
问候, 塞图