From 2848a3dc5d1859c6ae5e6c8b8a404ca5cd6da425 Mon Sep 17 00:00:00 2001 From: ParkFeng <1351315441@qq.com> Date: Sat, 8 Dec 2018 00:40:38 +0800 Subject: [PATCH] second commit --- ParkFeng/random_pick_with_weight/Learn1.java | 43 ++++++++++++++++++++ ParkFeng/random_pick_with_weight/readme.md | 41 +++++++++++++++++++ ParkFeng/readme.md | 4 +- 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 ParkFeng/random_pick_with_weight/Learn1.java create mode 100644 ParkFeng/random_pick_with_weight/readme.md diff --git a/ParkFeng/random_pick_with_weight/Learn1.java b/ParkFeng/random_pick_with_weight/Learn1.java new file mode 100644 index 0000000..6624755 --- /dev/null +++ b/ParkFeng/random_pick_with_weight/Learn1.java @@ -0,0 +1,43 @@ + +class Solution { + + int[] arr; + int maxOfArr; + Random random = new Random(); + public Solution(int[] w) { + arr = new int[w.length]; + arr[0] = w[0]; + for (int i = 1; i nums[end]) { + return end+1; + } else if (m > nums[start]) { + return start+1; + } else { + return start; + } + } +} \ No newline at end of file diff --git a/ParkFeng/random_pick_with_weight/readme.md b/ParkFeng/random_pick_with_weight/readme.md new file mode 100644 index 0000000..9199e8d --- /dev/null +++ b/ParkFeng/random_pick_with_weight/readme.md @@ -0,0 +1,41 @@ +题目: + +给定一个正整数数组 w ,其中 w[i] 代表位置 i 的权重,请写一个函数 pickIndex ,它可以随机地获取位置 i, +选取位置 i 的概率与 w[i] 成正比。 + +说明: + +1 <= w.length <= 10000 +1 <= w[i] <= 10^5 +pickIndex 将被调用不超过 10000 次 +示例1: + +输入: +["Solution","pickIndex"] +[[[1]],[]] +输出: [null,0] +示例2: + +输入: +["Solution","pickIndex","pickIndex","pickIndex","pickIndex","pickIndex"] +[[[1,3]],[],[],[],[],[]] +输出: [null,0,1,1,1,0] +输入语法说明: + +输入是两个列表:调用成员函数名和调用的参数。Solution 的构造函数有一个参数,即数组 w。 + pickIndex 没有参数。输入参数是一个列表,即使参数为空,也会输入一个 [] 空列表。 + + +题目分析: + +1、该题针对:正整数数组---权重数组 + +2、权重随机理解: +eg: int[] arr = {3,4}--->向上抛一个硬币(假设硬币落地一定是平躺)7次,出现正面反面的次数(权重)分别为3,4,那么就可以说这个实验中正面出现概率是 +3/7,反面出现概率是4/7,回到已知的这个数组上,3+4=7,权重随机我们可以理解为一个箱子中有七个分别标有1~7数字的乒乓球,我们随机从 +箱子中每次拿一个乒乓球,那么拿到标有1,2,3的乒乓球我们就认为对应的是数组中的3,拿到4,5,6,7就对应的是4 + +3、获取位置序号:利用二分法去查找 + + + diff --git a/ParkFeng/readme.md b/ParkFeng/readme.md index 48ff99f..e1d1353 100644 --- a/ParkFeng/readme.md +++ b/ParkFeng/readme.md @@ -2,4 +2,6 @@ -1.对角线遍历分析 \ No newline at end of file +1.对角线遍历分析 + +2.按权重随机选择 \ No newline at end of file