二分法+前缀和法

就记录一下,二分法的用法以及前缀和的用法。
这个题的概率问题,依靠前缀和法把w的每个元素的 概率问题依靠向前求和
然后使用二分法,找出random生成元素的所在位置下标即可。
class Solution { int[] w; public Solution(int[] w) { for(int i = 1; i < w.length ; i++){ w[i] += w[i-1]; } this.w = w; } public int pickIndex() { int target = new Random().nextInt(w[w.length-1])+1; int left = 0; int right = this.w.length-1; while(left < right){ int mid = (left+right)/2; if(this.w[mid] < target){ left = mid+1; }else{ right = mid; } } return right; } }

浙公网安备 33010602011771号