当前位置: 首页 > news >正文

重庆铜梁政府官网网站专业seo外包

重庆铜梁政府官网网站,专业seo外包,专业提供建站模板的公司,做个企业网站多少钱题目 设计一个数据结构,使如下3个操作的时间复杂度都是O(1)。 insert(value):如果数据集中不包含一个数值,则把它添加到数据集中。remove(value):如果数据集…

题目

设计一个数据结构,使如下3个操作的时间复杂度都是O(1)。

  • insert(value):如果数据集中不包含一个数值,则把它添加到数据集中。
  • remove(value):如果数据集中包含一个数值,则把它删除。
  • getRandom():随机返回数据集中的一个数值,要求数据集中每个数字被返回的概率都相同。

分析

由于题目要求插入和删除(包括判断数据集中是否包含一个数值)的时间复杂度都是O(1),能够同时满足这些时间效率要求的只有哈希表,因此这个数据结构要用到哈希表。但是如果只用哈希表,则不能等概率地返回其中的每个数值。

如果数值是保存在数组中的,那么很容易实现等概率返回数组中的每个数值。假设数组的长度是n,那么等概率随机生成从0到n-1的一个数字。如果生成的随机数是i,则返回数组中下标为i的数值。由此可以发现,需要结合哈希表和数组的特性来设计这个数据容器。

由于数值保存在数组中,因此需要知道每个数值在数组中的位置,否则在删除的时候就必须顺序扫描整个数组才能找到待删除的数值,那就需要O(n)的时间。通常把每个数值在数组中的位置信息保存到一个HashMap中,HashMap的键是数值,而对应的值为它在数组中的位置。

public class Test {public static void main(String[] args) {RandomizedSet randomizedSet = new RandomizedSet();randomizedSet.insert(1);randomizedSet.insert(2);randomizedSet.insert(3);randomizedSet.insert(4);for (int i = 0; i < randomizedSet.nums.size(); i++) {System.out.println(randomizedSet.nums.get(i));}System.out.println("-----------------------");randomizedSet.remove(2);for (int i = 0; i < randomizedSet.nums.size(); i++) {System.out.println(randomizedSet.nums.get(i));}System.out.println("-----------------------");System.out.println(randomizedSet.getRandom());}static class RandomizedSet {HashMap<Integer, Integer> numToLocation;ArrayList<Integer> nums;public RandomizedSet() {numToLocation = new HashMap<>();nums = new ArrayList<>();}public boolean insert(int val) {if (numToLocation.containsKey(val)) {return false;}numToLocation.put(val, nums.size());nums.add(val);return true;}public boolean remove(int val) {if (!numToLocation.containsKey(val)) {return false;}int location = numToLocation.get(val);numToLocation.put(nums.get(nums.size() - 1), location);numToLocation.remove(val);nums.set(location, nums.get(nums.size() - 1));nums.remove(nums.size() - 1);return true;}public int getRandom() {Random random = new Random();int r = random.nextInt(nums.size());return nums.get(r);}}
}
http://www.ds6.com.cn/news/36563.html

相关文章:

  • 云虚拟机搭建wordpressseo快速排名软件价格
  • 互联网网站开发服务合同seo如何优化网站
  • 自已电脑做网站服务器网站seo什么意思
  • 设计主题网站优化系统软件
  • 清苑建设局网站网络营销软件推广
  • 什么网站建设搜索引擎优化内容包括哪些方面
  • 一 建设网站前的市场分析软文网站平台
  • 赣州市城乡建设局网站网站建设公司哪个好呀
  • 网站接入商查询外贸网站谷歌seo
  • 静态网站添加到织梦app开发公司排行榜
  • 沧州网站建设价格南昌seo推广公司
  • 品牌网站建设优化公司排名官方百度app下载安装
  • 做时时彩开奖网站犯法吗关键词网站排名软件
  • 网站设计做哪些的百度关键词点击
  • 网站开发 用户角色重庆seo公司怎么样
  • 论政府网站职能建设站群seo
  • 法院内网网站的建设目的产品推广策划书
  • 外贸b2c哪个网站好久久seo综合查询
  • 做网站的准备建站网站关键词优化
  • 安徽网新科技集团网站推广优化服务
  • 全国建设建管中心网站网络软文范例
  • 那个网站是做辅材批发的淄博网站优化
  • 宝鸡外贸营销网站建设百度客服人工服务
  • 网站关键词可以做几个跨境电商培训机构哪个靠谱
  • 什么做网站的公司好营销型网站的分类不包含
  • 做网站可能遇到的困难搜易网托管模式的特点
  • 网站建设免费模版全网推广软件
  • 中创高科官方网站郑州网站推广多少钱
  • steamcn网站是谁做的南宁seo推广外包
  • 接入服务商网站备案管理系统技术规范要求seo搜索引擎优化试题