528. 按权重随机选择

给定一个正整数数组 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 没有参数。输入参数是一个列表,即使参数为空,也会输入一个 [] 空列表。

PS:

偷个懒

class Solution {

     int sum=0;
private TreeMap<int[], Integer> range = new TreeMap<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// 区间内
if (o1[0] >= o2[0] && o1[1] < o2[1]) {
return 0;
// 小于,左区间
} else if (o1[1] <= o2[0]) {
return -1; // 大于
} else {
return 1;
}
}
}); public Solution(int[] w) {
int start;
for(int i=0;i<w.length;i++) {
start = sum;
sum += w[i];
range.put(new int[]{start, sum}, i);
}
} public int pickIndex() {
int index = (int)(Math.random() * sum);
if (range.get(new int[]{index, index}) == null) {
return 0;
}else{
return range.get(new int[]{index, index});
}
}
} /**
* Your Solution object will be instantiated and called as such:
* Solution obj = new Solution(w);
* int param_1 = obj.pickIndex();
*/

最新文章

  1. 分享前端Facebook及Twitter第三方登录
  2. noj[1581] 筷子
  3. u盘中放入大于4g单独文件失败解决
  4. c 函数及指针学习 3
  5. WPF 绑定五(本身就是数据源)
  6. Windows+Git+TortoiseGit+COPSSH安装图文教程 转载
  7. hdu_2665_Kth number(主席树)
  8. DNS入门
  9. Java程序设计与数据结构导论--读后感
  10. 设置PL/SQL 快捷键
  11. Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
  12. 设置java.library.path的值(Mac/Linux/Windows)
  13. Java应用开发的一条重要经验:先建立基础设施
  14. 动态规划:树形DP-景点中心(树的带权重心)
  15. Java集合类综合
  16. Scrum Meeting Beta - 4
  17. 【转】js-ES6学习笔记-Symbol
  18. 关于JavaScript对象中的一切(一) -- 对象属性
  19. July 03rd 2017 Week 27th Monday
  20. 一点一点看JDK源码(五)java.util.ArrayList 后篇之SubList

热门文章

  1. 利用Asp.net和Sql Server实现留言板功能
  2. [hdu4713 Permutation]DP
  3. 使用IDEA远程向伪分布式搭建的Hadoop提交MapReduce作业
  4. 透过面试题掌握HashMap【持续更新中】
  5. CODING 敏捷实战系列课第三讲:可视化业务分析
  6. git切换账号
  7. 缓冲 buffer 和缓存 cache 的区别
  8. tp5.1 nginx环境下url去掉index.php
  9. Docker &amp; k8s 系列二:本机k8s环境搭建
  10. git命令之切换分支