算法分析与设计第十周:384. Shuffle an Array
来源:互联网 发布:淘宝客服介入会成功吗 编辑:程序博客网 时间:2024/05/23 16:54
class Solution(object): def __init__(self, nums): """ :type nums: List[int] """ self.__l = nums self.__size = len(nums) def reset(self): """ Resets the array to its original configuration and return it. :rtype: List[int] """ return self.__l def shuffle(self): randomSize = self.__size cnt = 1 #res保存返回的数组 res = [0 for i in range(self.__size)] #ableNum 保存尚可选择的数字 ableNum = [i for i in self.__l] for i in range(self.__size): pos = 0 #第一次有size个数字可以等概率选 #第二次有size - 1个数字可以等概率选、 #所以用递减的randomSize作为判断条件 while cnt <= randomSize: num = random.randint(1,cnt) % cnt #只剩一个数字可选时,直接添加 if randomSize == 1: res[i] = ableNum[0] break #等概率选择 if num == 0: res[i] = ableNum[cnt - 1] pos = cnt - 1 cnt += 1 #删除已选的数字 del ableNum[pos] cnt = 1 randomSize -= 1 return res __l = [] __size = 0# Your Solution object will be instantiated and called as such:# obj = Solution(nums)# param_1 = obj.reset()# param_2 = obj.shuffle()
0 0
- 算法分析与设计第十周:384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array**
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 洗牌算法-Shuffle an Array
- 【算法分析与设计】【第三周】215. Kth Largest Element in an Array
- [leetcode] 384. Shuffle an Array
- git 仓库迁移的两种方法
- mysql 5.5 中创建的数据库名称全都是小写
- liunx初级学习之管理系统中的简单分区和文件系统2-4
- C语言的编译链接过程
- Hadoop2.X64 分布式安装指南
- 算法分析与设计第十周:384. Shuffle an Array
- 安装及配置Maven环境变量
- 给你的app添加桌面widget
- hdu1175 (BFS)
- 单片机中断
- UE4中的事件调度器及C++中的使用
- Shell 递归多个子目录下的文件cp or mv到同一个目录下
- 问题汇总——Tomcat启动报错
- 改变多个ul下第一个li的样式