mirror of
				https://gitee.com/coder-xiaomo/leetcode-problemset
				synced 2025-11-04 03:33:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<p>给定一个正整数数组 <code>w</code> ,其中 <code>w[i]</code> 代表下标 <code>i</code> 的权重(下标从 <code>0</code> 开始),请写一个函数 <code>pickIndex</code> ,它可以随机地获取下标 <code>i</code>,选取下标 <code>i</code> 的概率与 <code>w[i]</code> 成正比。</p>
 | 
						||
 | 
						||
<ol>
 | 
						||
</ol>
 | 
						||
 | 
						||
<p>例如,对于 <code>w = [1, 3]</code>,挑选下标 <code>0</code> 的概率为 <code>1 / (1 + 3) = 0.25</code> (即,25%),而选取下标 <code>1</code> 的概率为 <code>3 / (1 + 3) = 0.75</code>(即,75%)。</p>
 | 
						||
 | 
						||
<p>也就是说,选取下标 <code>i</code> 的概率为 <code>w[i] / sum(w)</code> 。</p>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p><strong>示例 1:</strong></p>
 | 
						||
 | 
						||
<pre>
 | 
						||
<strong>输入:</strong>
 | 
						||
inputs = ["Solution","pickIndex"]
 | 
						||
inputs = [[[1]],[]]
 | 
						||
<strong>输出:</strong>
 | 
						||
[null,0]
 | 
						||
<strong>解释:</strong>
 | 
						||
Solution solution = new Solution([1]);
 | 
						||
solution.pickIndex(); // 返回 0,因为数组中只有一个元素,所以唯一的选择是返回下标 0。</pre>
 | 
						||
 | 
						||
<p><strong>示例 2:</strong></p>
 | 
						||
 | 
						||
<pre>
 | 
						||
<strong>输入:</strong>
 | 
						||
inputs = ["Solution","pickIndex","pickIndex","pickIndex","pickIndex","pickIndex"]
 | 
						||
inputs = [[[1,3]],[],[],[],[],[]]
 | 
						||
<strong>输出:</strong>
 | 
						||
[null,1,1,1,1,0]
 | 
						||
<strong>解释:</strong>
 | 
						||
Solution solution = new Solution([1, 3]);
 | 
						||
solution.pickIndex(); // 返回 1,返回下标 1,返回该下标概率为 3/4 。
 | 
						||
solution.pickIndex(); // 返回 1
 | 
						||
solution.pickIndex(); // 返回 1
 | 
						||
solution.pickIndex(); // 返回 1
 | 
						||
solution.pickIndex(); // 返回 0,返回下标 0,返回该下标概率为 1/4 。
 | 
						||
 | 
						||
由于这是一个随机问题,允许多个答案,因此下列输出都可以被认为是正确的:
 | 
						||
[null,1,1,1,1,0]
 | 
						||
[null,1,1,1,1,1]
 | 
						||
[null,1,1,1,0,0]
 | 
						||
[null,1,1,1,0,1]
 | 
						||
[null,1,0,1,0,0]
 | 
						||
......
 | 
						||
诸若此类。
 | 
						||
</pre>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p><strong>提示:</strong></p>
 | 
						||
 | 
						||
<ul>
 | 
						||
	<li><code>1 <= w.length <= 10000</code></li>
 | 
						||
	<li><code>1 <= w[i] <= 10^5</code></li>
 | 
						||
	<li><code>pickIndex</code> 将被调用不超过 <code>10000</code> 次</li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p><meta charset="UTF-8" />注意:本题与主站 528 题相同: <a href="https://leetcode-cn.com/problems/random-pick-with-weight/">https://leetcode-cn.com/problems/random-pick-with-weight/</a></p>
 |