528. 按权重随机选择
难度中等143收藏分享切换为英文接收动态反馈
给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。
例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。
也就是说,选取下标 i 的概率为 w[i] / sum(w) 。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
提示:
1 <= w.length <= 100001 <= w[i] <= 10^5pickIndex将被调用不超过10000次
通过次数19,031
提交次数39,362
二分查找
利用了数字是正数,他们的和是单调递增的特性,来判断一个值落在哪里。
1 | class Solution { |