洗牌算法

突然想起来之前面试的一个问题,洗牌算法怎么洗的又快又随机,当时一下问住了,后面自己复习的时候,发现有两种洗牌算法。
1.从52个数中随机选出一个数作为第一位,然后再从52位数随机选出第二位数且不能与前面的数重复,如果重复则重新选择,这样以此往后选择,直到第52位数
时间复杂度为n2,空间复杂度为n
2.从52个数中随机选出一个数作为第一位,再从剩下的数中随机选择一位,和第二交换,如此,直到第52位数
时间复杂度为n,空间复杂度为0

这个还有其他的解法吗?下次面试不知道还会不会问,不知道还可以咋回答
#题解#
全部评论
T=O(n) S=O(1)已经是最优解 比如Fisher–Yates shuffle
点赞 回复 分享
发布于 2019-07-08 16:02

相关推荐

04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
大摆哥:刚好要做个聊天软件,直接让你帮他干活了
点赞 评论 收藏
分享
阿里巴巴各部门年终奖开奖了,有人拿到了220w
真烦好烦真烦:拿命换钱呢,公司给你220万,肯定是因为你对公司的贡献大于220万,想想要多厉害多累才能达到
投递阿里巴巴集团等公司10个岗位 >
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客企业服务